https://github.com/csmqbusy/fastapi-personal-finances
Personal-finances app
https://github.com/csmqbusy/fastapi-personal-finances
factoryboy fastapi finances-manager javascript jinja2 postgresql rabbitmq sqlalchemy
Last synced: about 2 months ago
JSON representation
Personal-finances app
- Host: GitHub
- URL: https://github.com/csmqbusy/fastapi-personal-finances
- Owner: csmqbusy
- Created: 2025-04-04T14:16:17.000Z (about 2 months ago)
- Default Branch: main
- Last Pushed: 2025-04-04T16:26:41.000Z (about 2 months ago)
- Last Synced: 2025-04-04T17:29:50.403Z (about 2 months ago)
- Topics: factoryboy, fastapi, finances-manager, javascript, jinja2, postgresql, rabbitmq, sqlalchemy
- Language: Python
- Homepage:
- Size: 809 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
### 💭 About
A personal finance management tool for tracking income, spendings, and savings goals, with built-in analytics and a modular microservice architecture.
***##### ✨ Key Features:
• **Transaction management:** Record income/spendings, categorize transactions, and filter them flexibly.
• **Savings goals:** Set and track progress toward financial targets.
• **Data visualization:** Interactive charts (via `charts_service`) for spending/income trends.
• **CSV export:** Download transaction history for external analysis.
• **Web interface:** Demo frontend (`Jinja2` + `Bootstrap` + `JS`) with full API-backed functionality.
• **Auth:** Secure JWT-based authentication and authorization.
• **Async microservices:** Decoupled `charts_service` communicating via RabbitMQ.
***##### 🛠️ Tech Stack
• **Backend:** `FastAPI` for core logic and chart generation.
• **Database:** `PostgreSQL` for persistent storage.
• **Messaging:** `RabbitMQ` for inter-service communication.
• **Frontend:** Server-rendered templates (`Jinja2`) + dynamic `JS/Bootstrap`.
• **Testing:** Extensive test coverage with `factoryboy` for fixtures.
***##### ⚡ Architecture Highlights
• **Modular design:** Core app and `charts_service` run independently.
• **API-first:** All features accessible via RESTful endpoints.
***### 🪲 Usage
1. Clone repository.
2. Sync uv with `uv sync` command.
3. Go to the `charts_service` directory and perform `uv sync` there.
4. Activate venv with `source .venv/bin/activate` command.
5. Apply migrations with `alembic upgrade head` command.
6. Add `certs` folder to the root.
7. Generate two files with keys inside the `certs` folder using the `RS256` algorithm: `private_key.pem` & `public_key.pem`.
8. Rename `.env.dev.example` in the root folder to `env.dev`.
9. Rename `.env.dev.example` to `charts_service` to `env.dev`.
10. Run `charts_service` with the `uv ru charts_service/app/main.py ` command.
11. Launch the main application using the module `app/main.py `.
12. Enjoy!
***### 👀 Frontend overview
***
### 👀 API overview***