{"id":20964007,"url":"https://github.com/giovannak/myexpenses","last_synced_at":"2026-04-10T11:02:21.741Z","repository":{"id":151272165,"uuid":"309858727","full_name":"GiovannaK/MYExpenses","owner":"GiovannaK","description":"MYExpenses is a web app to manage earnings and expenses, view earnings and expenses data in dynamic dashboards, generate reports and more.","archived":false,"fork":false,"pushed_at":"2021-11-01T01:39:44.000Z","size":10834,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-01-01T09:10:23.842Z","etag":null,"topics":["celery","celery-beat","crontab","css3","django","docker","html5","javascript","materializecss","pdf-generation","postgresql","python","redis","sass"],"latest_commit_sha":null,"homepage":"https://myexpenses-service.herokuapp.com/","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/GiovannaK.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":"2020-11-04T02:17:40.000Z","updated_at":"2021-12-28T01:26:32.000Z","dependencies_parsed_at":"2023-04-23T08:31:42.494Z","dependency_job_id":null,"html_url":"https://github.com/GiovannaK/MYExpenses","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/GiovannaK/MYExpenses","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GiovannaK%2FMYExpenses","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GiovannaK%2FMYExpenses/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GiovannaK%2FMYExpenses/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GiovannaK%2FMYExpenses/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/GiovannaK","download_url":"https://codeload.github.com/GiovannaK/MYExpenses/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GiovannaK%2FMYExpenses/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31639524,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-10T07:40:12.752Z","status":"ssl_error","status_checked_at":"2026-04-10T07:40:11.664Z","response_time":98,"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":["celery","celery-beat","crontab","css3","django","docker","html5","javascript","materializecss","pdf-generation","postgresql","python","redis","sass"],"created_at":"2024-11-19T02:49:37.857Z","updated_at":"2026-04-10T11:02:21.717Z","avatar_url":"https://github.com/GiovannaK.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"# MYExpenses\n\n## See preview here: https://myexpenses-service.herokuapp.com/\n### Demo Credentials\n- User:    demo\n- Password:    myexpenses\n---\n![Project Image](static/assets/img/landing_page.png)\n\n![Project Image](static/assets/img/register.png)\n\n![Project Image](static/assets/img/login.png)\n\n![Project Image](static/assets/img/expenses.png)\n\n![Project Image](static/assets/img/expenses_menu.png)\n\n![Project Image](static/assets/img/expenses_dash.png)\n\n![Project Image](static/assets/img/expenses_reports.png)\n\n![Project Image](static/assets/img/profile.png)\n\n![Project Image](static/assets/img/darkmode_reports.png)\n\n![Project Image](static/assets/img/form.png)\n\n![Project Image](static/assets/img/darkmode.png)\n\n---\n\n### Table of Contents\nFind yourself here\n\n- [Description](#description)\n- [How To Use](#how-to-use)\n- [License](#license)\n- [Author Info](#author-info)\n- [Features](#Features)\n\n---\n\n## Description\nMYExpenses is a web app to manage earnings and expenses, view earnings and expenses data in dynamic graphs, generate reports and receive reminders about monthly expenses.\n\n## Technologies\n\n### Database\n- PostgreSQL\n- Redis\n### Backend\n- Python\n- Django framework\n- Celery (Task Queue)\n- Celery Beat\n- Crontab\n### Frontend\n- HTML5\n- CSS3\n- Materialize css\n- SASS\n\n---\n## Features\n\n### User Registration\n- username\n- email\n- password\n- confirm password\n- email confirmation\n\n### User Login\n- It is possible to log in using username and password, Google or GitHub account\n\n### Profile\n\n- Change your profile photo and description\n- Reset your password\n- Update your data including username and email\n- Darkmode option\n\n### Forgot password\n- You can recover your access typing your e-mail used when you register\n\n### Currency\n- Supports more than 100 currencies\n\n### Earnings and Expenses\n- You can add monthly or single earnings and expenses\n- You can update and delete earnings and expenses\n- It is possible to filter by category, interval date, currency or monthly earnings or expenses\n- if you have a lot of earnings and expenses you can search by title, description or value\n\n### Dashboards\n- See your earnings and expenses on interactive charts dynamically including:\n- Earnings and Expenses from January to December in the current year\n- First to fourth week of the current month\n- View the amount of your earnings and expenses by category\n- See the amount in the last five years\n\n### Reports\n- View your earnings and expenses by currency including:\n- Total in the current year, last three months, current month\n- Earnings or Expenses per currency in the current year\n- Earnings or Expenses per currency in the current month\n- Earnings or Expenses per currency in the last three months\n- Current Earanings or Expenses per currency\n\n### Email Reminders\n- When adding monthly expenses you receive emails on the 1st and 15th every month.\n\n### Export PDF\n- You can export your report data in pdf format\n\n---\n\n## How To Use\n\n### Run locally\n#### Use at least python 3.8.3 version\n### Clone the project\n\n```html\ngit clone https://github.com/GiovannaK/MYExpenses.git\n```\n### Create and start a virtual environment\n\n#### Windows\n```html\npython -m venv venv\n\nvenv\\Scripts\\activate.bat\n\npython -m pip install --upgrade pip setuptools wheel --user\n\npip install -r requirements.txt\n\npython manage.py migrate\n```\n\n#### Linux\n\n```html\npython3 -m venv venv\n\n. venv/bin/activate\n\npip install -r requirements.txt\n\npython manage.py migrate\n```\n\n#### MAC\n\n```html\npython -m venv venv\n\n. venv/bin/activate\n\npip install -r requirements.txt\n\npython manage.py migrate\n```\n\n### Database\n\n#### Create a postgres database and add the credentials to settings.py\n\n```html\nDATABASES = {\n    'default': {\n        'ENGINE': 'django.db.backends.postgresql_psycopg2',\n        'NAME': 'db_name',\n        'USER': 'name',\n        'PASSWORD': '',\n        'HOST': 'localhost',\n        'PORT': '',\n    }\n}\n```\n\n### Celery and Redis\n- This application uses celery and redis as storage and broker, include your redis credentials to start celery in settings.py. \n\nREDIS_URI is an environment variable, in case you want to add a service like heroku redis.\n\n```html\nCELERY_BROKER_URL = os.environ.get(\"REDIS_URI\", \"redis://redis:6379/0\")\n\nCELERY_RESULT_BACKEND = os.environ.get(\"REDIS_URI\", \"redis://redis:6379/0\")\n```\n\n### Docker\n- Assuming you already have the docker installed and properly configured run the following command build the image and start the container. This application has four containers including web for Django, Celery, Celery beat and redis.\n\n```html\ndocker-compose up\n```\n### You may need these commands:\n\n- Stop it all running\n\n```html\ndocker-compose down\n```\n\n- In case you change something in docker-compose.yml\n\n```html\ndocker-compose build\n```\n\n- In case you need to build only one container\n\n```html\ndocker-compose build containername\n```\n\n### S3 bucket was used to store static files and images you can create an account in AWS, create a bucket and setup the credentials in settings.py\n\n```html\nAWS_ACCESS_KEY_ID = config('AWS_ACCESS_KEY_ID')\nAWS_SECRET_ACCESS_KEY = config('AWS_SECRET_ACCESS_KEY')\nAWS_STORAGE_BUCKET_NAME = config('AWS_STORAGE_BUCKET_NAME')\nAWS_S3_FILE_OVERWRITE = False\nAWS_DEFAULT_ACL = None\nDEFAULT_FILE_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'\nSTATICFILES_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'\n\nSTATIC_URL = 'http://' + AWS_STORAGE_BUCKET_NAME + '.s3.amazonaws.com/'\nADMIN_MEDIA_PREFIX = STATIC_URL + 'admin/'\n```\n### If you don't want to use the S3 bucket, delete the credentials, remove ADMIN_MEDIA_PREFIX and change STATIC_URL to \n\n```html\nSTATIC_URL = '/static/'\n```\n### Generate a secret key and add to settings.py\n---\n### You can use this link to generate your secret key\n#### https://miniwebtool.com/django-secret-key-generator/\n---\n### Run this command to migrate your database\n\n```html\ndocker-compose exec web python manage.py migrate\n```\n### Run this to create an admin account\n\n```html\ndocker-compose exec web python manage.py createsuperuser\n```\n### Start the development server in localhost:8000\n\n```html\ndocker-compose exec web python manage.py runserver\n```\n\n\n---\n\n\n## License\n\nMIT License\n\nCopyright (c) [2020]\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n\n\n---\n\n## Author Info\n\n- Linkedin - [Giovanna Cunha](https://www.linkedin.com/in/giovanna-kelli/)\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgiovannak%2Fmyexpenses","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgiovannak%2Fmyexpenses","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgiovannak%2Fmyexpenses/lists"}