This is a comprehensive financial tracker application designed to help users manage their finances efficiently. Built using FastAPI, the application provides a modern, fast, and asynchronous web framework. The database operations are handled using Tortoise-ORM, a native and easy-to-use Object Relational Mapper. This application allows users to categorize and monitor their income and expenses across different projects, making it easy to track financial progress and make informed decisions, and getting reports based on their needs.
Key features of the application include:
- User authentication and authorization.
- Project and category management.
- CRUD operations for transactions, allowing users to create, read, update, and delete their financial records.
- Generating reports.
- Convert between different currencies (using Exchange Rate API).
- Nice Graphs for visualizing the transactions.
- Swagger UI documentation for easy API testing and exploration.
Technologies used in this project:
- FastAPI: For building the web API.
- Tortoise-ORM: For ORM and database interactions.
- PostgreSQL: As the relational database.
- Pydantic: For data validation.
- Aerich: For database migrations.
- HTML/CSS/JavaScript: For the frontend interface.
-
Clone the repository:
git clone https://github.com/munjed-ab/finance.git
-
Create and activate a virtual environment:
python -m venv venv source venv/bin/activate # On Windows, use `venv\Scripts\activate`
-
Install the dependencies:
pip install -r requirements.txt
-
Create a .env file and place the needed secrets (DP_NAME, DP_PASS, SEKRET_KEY..).
-
Set up the database:
aerich init -t config_orm.TORTOISE_ORM aerich init-db aerich migrate aerich upgrade
-
Run the application:
uvicorn main:app --reload
- Open your browser and go to
http://127.0.0.1:8000/docsto access the automatically generated Swagger UI documentation. - Use the provided endpoints to manage users, projects, categories, and transactions.
- Example endpoints include:
POST /transactions/to create a new transaction.GET /transactions/to list all transactions.PUT /transactions/{transaction_id}to update a transaction.DELETE /transactions/{transaction_id}to delete a transaction.
This project is licensed under the MIT License.
All the artwork provided are form Freepik
