{"id":20851900,"url":"https://github.com/whoisjayd/finance-manager","last_synced_at":"2026-04-02T01:03:06.678Z","repository":{"id":286802462,"uuid":"959090036","full_name":"whoisjayd/finance-manager","owner":"whoisjayd","description":"💰 A comprehensive personal finance manager built with Flask, MongoDB, and Bootstrap 5. Features include expense tracking, budgeting, advanced reporting, user management, and a secure admin system. Deploys easily with Docker.","archived":false,"fork":false,"pushed_at":"2025-06-22T18:02:09.000Z","size":126,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-12-28T11:09:53.465Z","etag":null,"topics":["bootstrap5","budgeting-app","chartjs","docker","expense-tracker","finance","finance-manager","financial-reports","flask","gunicorn","mongodb","personal-finance","python","python-flask-project","waitress"],"latest_commit_sha":null,"homepage":"https://finance-manager-dashboard.vercel.app/","language":"HTML","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/whoisjayd.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-04-02T08:52:02.000Z","updated_at":"2025-10-03T14:41:19.000Z","dependencies_parsed_at":"2025-12-26T23:02:17.208Z","dependency_job_id":null,"html_url":"https://github.com/whoisjayd/finance-manager","commit_stats":null,"previous_names":["whoisjayd/finance-manager"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/whoisjayd/finance-manager","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/whoisjayd%2Ffinance-manager","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/whoisjayd%2Ffinance-manager/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/whoisjayd%2Ffinance-manager/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/whoisjayd%2Ffinance-manager/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/whoisjayd","download_url":"https://codeload.github.com/whoisjayd/finance-manager/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/whoisjayd%2Ffinance-manager/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31293631,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-01T21:15:39.731Z","status":"ssl_error","status_checked_at":"2026-04-01T21:15:34.046Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["bootstrap5","budgeting-app","chartjs","docker","expense-tracker","finance","finance-manager","financial-reports","flask","gunicorn","mongodb","personal-finance","python","python-flask-project","waitress"],"created_at":"2024-11-18T03:15:27.822Z","updated_at":"2026-04-02T01:03:06.538Z","avatar_url":"https://github.com/whoisjayd.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 💰 Finance Manager\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![Python Version](https://img.shields.io/badge/python-3.9+-blue.svg)](https://www.python.org/downloads/)\n[![Flask](https://img.shields.io/badge/Flask-2.3.3-green)](https://flask.palletsprojects.com/)\n[![MongoDB](https://img.shields.io/badge/MongoDB-6.0-brightgreen)](https://www.mongodb.com/)\n[![Docker](https://img.shields.io/badge/docker-%230db7ed.svg)](https://www.docker.com/)\n![visitor badge](https://visitor-badge.laobi.icu/badge?page_id=https://github.com/WhoIsJayD/Finance-Manage)\n\nA comprehensive personal finance management web application built with Flask and MongoDB. Track your income and expenses, analyze your spending habits with detailed reports, set budgets, and take full control of your financial life.\n\n[**Watch the Demo**](#-live-demo--screenshots) · [**Report a Bug**](https://github.com/WhoIsJayD/Finance-Manager/issues) · [**Request a Feature**](https://github.com/WhoIsJayD/Finance-Manager/issues)\n\n\n### 🌟 Key Features\n\n-   📊 **Interactive Dashboard**: Get an instant overview of your finances, including income, expenses, current balance, and recent transactions.\n-   💸 **Transaction Management**: Easily add, edit, and delete income and expense records with details like tags and payment methods.\n-   🎯 **Budgeting System**: Set monthly budgets for different expense categories and visually track your progress against them.\n-   📈 **Advanced Reporting**: Visualize your financial data with dynamic charts for monthly trends, category breakdowns, payment methods, and cash flow projections.\n-   🎨 **Customizable Interface**: Personalize your experience with theme support (light/dark mode), multiple currencies, and custom date formats.\n-   📧 **Email Notifications**: Receive security alerts, budget warnings, and financial summaries directly to your inbox using Resend.\n-   🔐 **Secure Admin System**: A protected area for user management (grant/revoke admin rights) and viewing system logs.\n-   🐳 **Dockerized**: Get up and running in minutes with the provided Docker Compose setup for a smooth deployment.\n\n\n### 🎥 Live Demo \u0026 Screenshots\n\nClick the thumbnail below to watch a video overview of the dashboard and its features.\n\u003cdiv align=\"center\"\u003e\n  \u003ca href=\"https://res.cloudinary.com/dx9ctc074/video/upload/v1750612468/xjnwfyagyptuyalparfk.mp4\"\u003e\n    \u003cimg src=\"https://res.cloudinary.com/dx9ctc074/image/upload/v1750612741/nope92vbrk6pnq7rfylp.gif\" alt=\"Application Demo\" width=\"100%\"\u003e\n  \u003c/a\u003e\n\u003c/div\u003e\n\n#### 📱 Screenshots\n\n| Transaction Page | Budget Page | Report Page | Admin Dashboard |\n|:----------------:|:-----------:|:-----------:|:---------------:|\n| ![Transaction Page](https://i.imgur.com/PNjjy0O.png) | ![Budget Page](https://i.imgur.com/uw27TSC.png) | ![Report Page](https://i.imgur.com/UGsW3AV.png) | ![Admin Dashboard](https://i.imgur.com/H33MA9W.png) |\n\n\n### 🛠️ Tech Stack\n\nBuilt with a modern and robust technology stack:\n\n-   **Backend**: Python, Flask\n-   **Database**: MongoDB (with PyMongo)\n-   **Frontend**: HTML, CSS, JavaScript, Bootstrap 5\n-   **Charting**: Chart.js\n-   **WSGI Servers**: Gunicorn (for Linux/macOS), Waitress (for Windows)\n-   **Deployment**: Docker\n\n\n### 🚀 Getting Started\n\nThe fastest way to get the Finance Manager running is with Docker.\n\n#### Prerequisites\n\n-   [Docker](https://www.docker.com/products/docker-desktop/) and [Docker Compose](https://docs.docker.com/compose/install/)\n-   Git\n\n#### Quick Start with Docker\n\n1.  **Clone the repository:**\n    ```sh\n    git clone [https://github.com/WhoIsJayD/Finance-Manager.git](https://github.com/WhoIsJayD/Finance-Manager.git)\n    cd Finance-Manager\n    ```\n\n2.  **Create your environment file:**\n    Copy the example file. On Linux/macOS, use `cp .env.example .env`. On Windows, use `copy .env.example .env`.\n\n3.  **Configure your `.env` file:**\n    Open the `.env` file and set the following variables. A strong `SECRET_KEY` is crucial.\n    ```env\n    FLASK_ENV=production\n    SECRET_KEY=generate_a_very_secure_random_string_here\n    RESEND_API_KEY=your_resend_api_key_for_emails\n    ADMIN_SETUP_CODE=a_secure_random_code_for_first_admin_setup\n    ADMIN_PASSWORD=a_strong_password_for_sensitive_admin_actions\n    ```\n\n4.  **Build and run the containers:**\n    ```sh\n    docker-compose up -d --build\n    ```\n\n5.  **Access the application:**\n    Open your browser and navigate to `http://localhost:5000`.\n\n6.  **Initialize the first Admin User:**\n    -   Navigate to `http://localhost:5000/initialize-admin`.\n    -   Enter the `ADMIN_SETUP_CODE` from your `.env` file.\n    -   Fill in the form to create your admin account.\n\n\n### ⚙️ Manual Installation (Without Docker)\n\nIf you prefer a manual setup:\n\n1.  **Clone the repository and create a virtual environment:**\n    ```sh\n    git clone [https://github.com/WhoIsJayD/Finance-Manager.git](https://github.com/WhoIsJayD/Finance-Manager.git)\n    cd Finance-Manager\n    python3 -m venv venv\n    source venv/bin/activate  # On Linux/macOS\n    # venv\\Scripts\\activate   # On Windows\n    ```\n\n2.  **Install dependencies:**\n    ```sh\n    pip install -r requirements.txt\n    ```\n   \n\n3.  **Set up MongoDB:**\n    Ensure you have a running MongoDB instance and update the `MONGO_URI` in your `.env` file accordingly.\n\n4.  **Configure and run the application:**\n    -   Create and fill out the `.env` file as described in the Docker setup.\n    -   **On Linux/macOS (with Gunicorn):**\n        ```sh\n        gunicorn --bind 0.0.0.0:5000 \"app:app\"\n        ```\n       \n    -   **On Windows (with Waitress):**\n        ```sh\n        python run_server.py\n        ```\n       \n\n\n### 🔒 Security Considerations\n\nThe application is built with security in mind:\n-   Password hashing with **bcrypt**.\n-   Rate limiting on login/registration routes to prevent brute-force attacks.\n-   Secure, `HttpOnly` session cookies.\n-   Admin actions like toggling user privileges require password confirmation.\n-   Input validation and parameterized database queries to prevent injection attacks.\n\nFor production, always run behind a reverse proxy (like Nginx or Caddy) and enable HTTPS.\n\n\n\n### 🤝 Contributing\n\nContributions are what make the open-source community such an amazing place to learn, inspire, and create. Any contributions you make are **greatly appreciated**.\n\n1.  **Fork the Project**.\n2.  **Create your Feature Branch** (`git checkout -b feature/AmazingFeature`).\n3.  **Commit your Changes** (`git commit -m 'Add some AmazingFeature'`).\n4.  **Push to the Branch** (`git push origin feature/AmazingFeature`).\n5.  **Open a Pull Request**.\n\nPlease ensure your code follows the existing style and that you add comments for complex logic.\n\n\n\n### 📄 License\n\nDistributed under the MIT License. See `LICENSE` file for more information.\n\n\n### 🙏 Acknowledgements\n\n-   [Bootstrap](https://getbootstrap.com/)\n-   [Chart.js](https://www.chartjs.org/)\n-   [Flask](https://flask.palletsprojects.com/)\n-   [MongoDB](https://www.mongodb.com/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwhoisjayd%2Ffinance-manager","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwhoisjayd%2Ffinance-manager","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwhoisjayd%2Ffinance-manager/lists"}