{"id":26045363,"url":"https://github.com/danielosendi/expense-tracker-app","last_synced_at":"2026-04-22T10:32:17.781Z","repository":{"id":280825045,"uuid":"943206623","full_name":"DanieloSendi/Expense-Tracker-App","owner":"DanieloSendi","description":"An expense tracking application developed in Django.","archived":false,"fork":false,"pushed_at":"2025-04-27T09:54:41.000Z","size":103,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-27T10:41:12.881Z","etag":null,"topics":["bootstrap5","django","html-css-javascript","python3","visual-studio-code"],"latest_commit_sha":null,"homepage":"https://expense-tracker-vlon.onrender.com","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/DanieloSendi.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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}},"created_at":"2025-03-05T10:33:54.000Z","updated_at":"2025-04-27T09:54:45.000Z","dependencies_parsed_at":null,"dependency_job_id":"aaee4f6a-cbf0-45a5-aedf-053136e86552","html_url":"https://github.com/DanieloSendi/Expense-Tracker-App","commit_stats":null,"previous_names":["danielosendi/expense-tracker-app"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/DanieloSendi/Expense-Tracker-App","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DanieloSendi%2FExpense-Tracker-App","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DanieloSendi%2FExpense-Tracker-App/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DanieloSendi%2FExpense-Tracker-App/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DanieloSendi%2FExpense-Tracker-App/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/DanieloSendi","download_url":"https://codeload.github.com/DanieloSendi/Expense-Tracker-App/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DanieloSendi%2FExpense-Tracker-App/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32132191,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-22T08:34:57.708Z","status":"ssl_error","status_checked_at":"2026-04-22T08:34:55.583Z","response_time":58,"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","django","html-css-javascript","python3","visual-studio-code"],"created_at":"2025-03-07T19:52:50.262Z","updated_at":"2026-04-22T10:32:17.776Z","avatar_url":"https://github.com/DanieloSendi.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Expense-Tracker-App\n\n[![Python Version](https://img.shields.io/badge/python-3.10.11-blue?logo=python)](https://www.python.org/downloads/release/python-31011/)\n[![Django Version](https://img.shields.io/badge/django-5.1.8-blueviolet?logo=django)](https://docs.djangoproject.com/en/5.2/releases/5.1.8/)\n[![CI/CD Status](https://github.com/DanieloSendi/Expense-Tracker-App/actions/workflows/django.yml/badge.svg)](https://github.com/DanieloSendi/Expense-Tracker-App/actions)\n[![Coverage Status](https://coveralls.io/repos/github/DanieloSendi/Expense-Tracker-App/badge.svg?branch=main)](https://coveralls.io/github/DanieloSendi/Expense-Tracker-App?branch=main)\n[![License](https://img.shields.io/github/license/DanieloSendi/Expense-Tracker-App)](https://github.com/DanieloSendi/Expense-Tracker-App/blob/main/LICENSE)\n\nAn expense tracking application developed in Django.\n\n## Features\n\n- User authentication (register, login, logout)\n- Expense management (add, view, edit, delete)\n- Budget tracking with graphic alerts\n- User profile management (username, email update, password change)\n- Responsive UI/UX with Bootstrap\n- CSV export of expenses\n- Dockerized - runs in a container for easy deployment\n- CI/CD with GitHub Actions - automated testing, docker build, and deployment in server\n\n## Installation \u0026 Setup\n\n### Clone the repository\n\n```bash\ngit clone https://github.com/DanieloSendi/Expense-Tracker-App.git\ncd Expense-Tracker-App\n```\n\n### Create a virtual environment \u0026 install dependencies\n\n```bash\npython -m venv venv\nsource venv/bin/activate  # Alternative options on Windows: venv\\Scripts\\activate\npip install -r requirements.txt\n```\n\n### Set up the database\n\n```bash\npython manage.py makemigrations\npython manage.py migrate\npython manage.py createsuperuser  # Create admin user (optional)\n```\n\n### Run the development server\n\n```bash\npython manage.py runserver\n```\n\n## Structure of the application\n\n```bash\nExpense-Tracker-App/\n│── config/                       # Main Django settings \u0026 URLs\n│── expenses/                     # Expense management module\n│── users/                        # User authentication \u0026 profile management\n│── templates/                    # HTML templates for frontend\n│── static/                       # CSS, JavaScript, images\n│── .env                          # Environment variables (not in repo)\n│── requirements.txt              # Required Python packages\n│── manage.py                     # Django entry point\n│── Dockerfile                    # Docker configuration\n│── .dockerignore                 # Files ignored in Docker builds\n│── .github/workflows/django.yml  # CI/CD configuration\n│── db.sqlite3                    # SQLite database file (local development)\n│── README.md                     # Project documentation\n│── LICENSE                       # License file for open-source usage\n```\n\n## Database models\n\nThe project contains three models in expenses app:\n\n- **Category** - Stores predefined categories of expenses.\n- **Expense** - Stores information about the user's expenses (amount, category, description, date).\n- **Budget** - Stores the user's budget limit.\n\n## Dashboard\n\nUsers can see:\n\n- 📊 Total spent \u0026 balance\n- 🟢 Green alert (under budget)\n- 🟡 Yellow alert (near limit)\n- 🔴 Red alert (over budget)\n\n## Run with Docker\n\nIf you prefer running the application in a Docker container, use the following commands:\n\n### Build and run locally\n\n```bash\ndocker build -t expense-tracker .\ndocker run -p 8000:8000 --env SECRET_KEY=mysecretkey expense-tracker\n```\n\n### Run using the published Docker image from GitHub Container Registry\n\n```bash\ndocker pull ghcr.io/danielosendi/expense-tracker-app:latest\ndocker run -p 8000:8000 ghcr.io/danielosendi/expense-tracker-app:latest\n```\n\n## CI/CD \u0026 Deployment\n\nThis project uses GitHub Actions for CI/CD automation:\n\n- Build \u0026 Test – Every push to main triggers tests.\n- Release – The app is containerized using Docker.\n- Deploy – The latest image is deployed automatically.\n\n## License\n\nThis project is licensed under the MIT License.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdanielosendi%2Fexpense-tracker-app","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdanielosendi%2Fexpense-tracker-app","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdanielosendi%2Fexpense-tracker-app/lists"}