{"id":27048591,"url":"https://github.com/csmqbusy/fastapi-personal-finances","last_synced_at":"2026-05-04T10:39:28.928Z","repository":{"id":286156167,"uuid":"960487062","full_name":"csmqbusy/fastapi-personal-finances","owner":"csmqbusy","description":"Personal-finances app","archived":false,"fork":false,"pushed_at":"2025-04-04T16:26:41.000Z","size":828,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-04T17:29:50.403Z","etag":null,"topics":["factoryboy","fastapi","finances-manager","javascript","jinja2","postgresql","rabbitmq","sqlalchemy"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/csmqbusy.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-04-04T14:16:17.000Z","updated_at":"2025-04-04T16:26:45.000Z","dependencies_parsed_at":"2025-04-04T17:40:56.368Z","dependency_job_id":null,"html_url":"https://github.com/csmqbusy/fastapi-personal-finances","commit_stats":null,"previous_names":["csmqbusy/fastapi-personal-finances"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/csmqbusy%2Ffastapi-personal-finances","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/csmqbusy%2Ffastapi-personal-finances/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/csmqbusy%2Ffastapi-personal-finances/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/csmqbusy%2Ffastapi-personal-finances/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/csmqbusy","download_url":"https://codeload.github.com/csmqbusy/fastapi-personal-finances/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247299850,"owners_count":20916193,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["factoryboy","fastapi","finances-manager","javascript","jinja2","postgresql","rabbitmq","sqlalchemy"],"created_at":"2025-04-05T07:15:17.991Z","updated_at":"2026-05-04T10:39:28.849Z","avatar_url":"https://github.com/csmqbusy.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"### 💭 About\n\nA personal finance management tool for tracking income, spendings, and savings goals, with built-in analytics and a modular microservice architecture.\n***\n\n##### ✨ Key Features:\n• **Transaction management:** Record income/spendings, categorize transactions, and filter them flexibly.  \n• **Savings goals:** Set and track progress toward financial targets.  \n• **Data visualization:** Interactive charts (via `charts_service`) for spending/income trends.  \n• **CSV export:** Download transaction history for external analysis.  \n• **Web interface:** Demo frontend (`Jinja2` + `Bootstrap` + `JS`) with full API-backed functionality.  \n• **Auth:** Secure JWT-based authentication and authorization.  \n• **Async microservices:** Decoupled `charts_service` communicating via RabbitMQ.  \n***\n\n##### 🛠️ Tech Stack\n• **Backend:** `FastAPI` for core logic and chart generation.  \n• **Database:** `PostgreSQL` for persistent storage.  \n• **Messaging:** `RabbitMQ` for inter-service communication.  \n• **Frontend:** Server-rendered templates (`Jinja2`) + dynamic `JS/Bootstrap`.  \n• **Testing:** Extensive test coverage with `factoryboy` for fixtures.  \n***\n\n##### ⚡ Architecture Highlights\n• **Modular design:** Core app and `charts_service` run independently.  \n• **API-first:** All features accessible via RESTful endpoints.\n***\n\n### 🪲 Usage\n1. Clone repository.  \n2. Sync uv with `uv sync` command.  \n3. Go to the `charts_service` directory and perform `uv sync` there.  \n4. Activate venv with `source .venv/bin/activate` command.  \n5. Apply migrations with `alembic upgrade head` command.  \n6. Add `certs` folder to the root.  \n7. Generate two files with keys inside the `certs` folder using the `RS256` algorithm: `private_key.pem` \u0026 `public_key.pem`.  \n8. Rename `.env.dev.example` in the root folder to `env.dev`.  \n9. Rename `.env.dev.example` to `charts_service` to `env.dev`.  \n10. Run `charts_service` with the `uv ru charts_service/app/main.py ` command.  \n11. Launch the main application using the module `app/main.py `.  \n12. Enjoy!  \n***\n\n### 👀 Frontend overview\n\u003cimg src=\"https://github.com/user-attachments/assets/1299f0bc-c7d6-4d9e-a27f-177e82a24d7a\" alt=\"quick_demonstration\" width=\"700\"\u003e\n\n***\n### 👀 API overview\n\u003cimg src=\"https://github.com/user-attachments/assets/32d884df-641a-4a4d-ace4-16d3819d3019\" width=\"700\" alt=\"api overview\"  /\u003e\n\n***","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcsmqbusy%2Ffastapi-personal-finances","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcsmqbusy%2Ffastapi-personal-finances","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcsmqbusy%2Ffastapi-personal-finances/lists"}