T4d Wallet System is an open-source digital wallet application that allows users to manage and track their finances. It supports multiple currencies, transaction histories, and real-time balance updates. The goal of this project is to provide a simple, secure, and scalable solution for personal and business financial management.
- Create and manage multiple wallets.
- Support for multiple currencies.
- Track income and expenses with detailed transaction history.
- View real-time balance updates.
- Secure authentication and authorization mechanisms.
- API for integrating with external services.
This project follows a monorepo structure, where both the backend (API) and frontend (UI) are housed in the same repository.
Before you begin, ensure you have the following:
- Node.js (v14 or higher)
- Git
- MongoDB
git clone https://github.com/pelumiadebayo/T4dWallet.git
cd T4dWallet
- Navigate to the backend folder:
cd backend
- Install the dependencies:
npm install
- Environment Setup:
Create a
.env
file in the root of the project and set the following environment variables:
DATABASE_URL=mongodb://localhost:27017/T4dWallet
JWT_SECRET=your_secret_key
- Start the backend server:
npm start
The backend should now be running, typically on port 5000.
- Navigate to the frontend folder:
cd frontend
- Install the dependencies:
npm install
- Start the frontend application:
npm start
The frontend should now be running, typically on port 3000.
Once the application is up and running, you can:
- Register a new user and log in.
- Create, update, or delete wallets.
- Add transactions (income or expenses) to the wallet. (debit or credit)
- View transaction history and current balance.
We welcome contributions! Whether it's fixing bugs, adding new features, or improving documentation, your help is appreciated.
- Fork the repository.
- Create a new branch for your feature or bug fix:
git checkout -b feature/your-feature-name
- Make your changes and commit them. There can only be one commit per pull request.
git commit -m "Add feature: your feature name"
- Push your branch:
git push origin feature/your-feature-name
- Open a pull request from your fork to the
main
branch of the original repository. Use the format/example for Pull Request in wiki.
- Code Standards: Please ensure that your code follows the project's coding standards. We use ESLint for linting and Prettier for formatting. Write meaningful commit messages using inline comments or documentation blocks
- Testing: All new features and bug fixes must include tests. We use Jest for unit tests.
- Documentation: Any changes or new features should be accompanied by appropriate documentation updates. The documentation guideline is as follows;
- docs/features.md - Explains newly added features.
- docs/api.md - Detailed API documentation.
- docs/configuration.md - Advanced configuration options
- CHANGELOG.md - This is where you list changes, bug fixes, new features, and updates. This file would include entries for new features with links to more detailed documentation in the docs/folder. Find example entry below:
### [v1.2.0] - 2024-09-12: Added - New Feature: Added Ability to manage multiple currencies in wallets. [See docs/features.md](./docs/features.md) [Your Name] OR - Changes: Added new field to support dollsr currency in 'multiple currencies' feature. [See docs/features.md](./docs/features.md) [Your Name] OR - Bug Fixes: Fix the dollar sign bug for the 'multiple currencies' feature. [See docs/features.md](./docs/api.md) [Your Name]
If you encounter any issues, or bugs, feel free to open an issue. Please be as detailed as possible in your description. Log all issues and bugs in the project's Github issue Tracker.
-
Search for Existing Issues: Before creating a new issue, check the Issue Tracker to see if the same problem has already been reported or discussed.
-
Submit a New Issue: If the issue hasn’t been reported, click "New Issue" and provide:
- A clear and concise title.
- A description of the problem, including steps to reproduce it.
- Any logs or screenshots that can help us diagnose the issue.
- If possible, suggest a solution.
-
Label the Issue: Add appropriate labels, such as
bug
,enhancement
, ordocumentation
.
You can use this template in wiki for raising bugs or issues.
If you have ideas for new features, feel free to open an issue to suggest it.
- Check for Existing Requests: Search the Issue Tracker to see if the feature request already exists.
- Provide Clear Motivation: Explain why you think the feature is valuable and how it will improve the project.
- Describe the Feature: Provide a detailed description of the feature, including any technical details.
- Alternatives: If there are existing solutions or workarounds, mention those and explain why your proposed feature is better.
- Consider Implementation: If possible, share how the feature could be implemented or offer to work on it.
You can use this template in wiki for feature requests.
Use the project's wiki to get a deeper understanding of the project and to find important information. Every Information here and more is contained in the project's wiki. It contain a detailed overview of the project, its goals, and its current state, including project Architecture, Technicals Documentation, and information for project management. You can find it here: Project wiki
-
Home Page: Start with the Wiki’s Home page. This is typically where you’ll find the introduction and links to important sections like installation guides.
-
Table of Contents: For quick navigation. Use this to explore different parts of the documentation, such as setup, development process, API documentation, or contribution guidelines.
-
Search Feature: You can use the search bar in the Wiki to quickly find specific topics or instructions if you’re looking for something specific.
- Getting Started Guide: Instructions to set up the project locally.
- Architecture Overview: A high-level look at the system’s components and how they interact.
- Contribution Guidelines: Information on how to contribute to the project, file issues, and make pull requests.
This project is licensed under the MIT License. See the LICENSE file for more information.