{"id":21967545,"url":"https://github.com/droffilc1/spendless","last_synced_at":"2026-04-15T19:35:06.149Z","repository":{"id":228308949,"uuid":"773618408","full_name":"droffilc1/spendless","owner":"droffilc1","description":"Spendless is a web application for users to track their expenses","archived":false,"fork":false,"pushed_at":"2024-05-05T15:04:15.000Z","size":1756,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-01-28T01:45:36.877Z","etag":null,"topics":["javascript","mysql","python","react","sql","sqlalchemy","tailwindcss","ubuntu"],"latest_commit_sha":null,"homepage":"https://spendless.ink","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/droffilc1.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":"AUTHORS","dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-03-18T04:51:21.000Z","updated_at":"2024-05-05T15:04:18.000Z","dependencies_parsed_at":"2024-04-18T07:26:26.944Z","dependency_job_id":"6233cef0-8697-4991-b673-680cf1d14b33","html_url":"https://github.com/droffilc1/spendless","commit_stats":null,"previous_names":["droffilc1/spendless"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/droffilc1%2Fspendless","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/droffilc1%2Fspendless/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/droffilc1%2Fspendless/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/droffilc1%2Fspendless/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/droffilc1","download_url":"https://codeload.github.com/droffilc1/spendless/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245026041,"owners_count":20549072,"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":["javascript","mysql","python","react","sql","sqlalchemy","tailwindcss","ubuntu"],"created_at":"2024-11-29T13:28:40.750Z","updated_at":"2026-04-15T19:35:01.111Z","avatar_url":"https://github.com/droffilc1.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# SpendLess\n## Overview\n\nSpendLess is a web application for users to track their expenses. The application consists of a backend API built with Flask, which interacts with a MySQL database using SQLAlchemy ORM, and a frontend user interface developed with React.\n\n![image](https://github.com/droffilc1/spendless/assets/97587370/dfc4d75c-9f34-49e4-a6ad-3a21f19c0c3a)\n\n\n## Live Demo\n\nFor the link to the live demo, [Click here](https://spendless.ink) 👈\n\n[Blog post](https://cliffordmapesa.hashnode.dev/how-spendless-came-to-life)\\\n[Project slides](https://docs.google.com/presentation/d/13kdNIZpNa1aWhp_JmAzDbzenE41hELvo933tf162sPQ/edit?usp=sharing)\n\n## Technology Stack\n\n### Frontend:\n\n- React (JavaScript library)\n- Tailwind css\n\n### Backend:\n\n- Flask (Microframework for Python)\n\n### DevOps:\n\n- Digital Ocean server for hosting\n- Domain for online presence\n- Nginx web server for handling HTTP requests\n- Gunicorn application server for serving Flask application\n- Certbot for SSL encryption\n- UFW firewall for security\n\n### Database:\n\n- MYSQL\n\n## Features\n- Register a new user.\n- Login a user\n- Add an expense\n- Add a category\n- View expenses\n- Overview of a user's spending\n- Update expense\n- Update category\n- Track expenses\n\n## Motivation\n\nThis project was part of ALX Software Engineering program. I chose this project so as to get a deeper understanding of how APIs work and how to consume them on the frontend\n\n## Getting Started\n\nTo get a local copy up and running you just need to follow the following steps in your terminal;\n\n```\ngit clone \"url\"\n```\n\nwhere \"url\" (without the quotation marks) is the url to this repository.\n\nFor example:\n\n```\ngit clone https://github.com/droffilc1/spendless.git\n```\n\nHere you're copying the contents of the spendless repository on GitHub to your computer.\n\nChange to the repository directory on your computer (if you are not already there):\n\n```\ncd spendless\n```\n\n## Reference\n\n[How To Secure Nginx with Let's Encrypt on Ubuntu](https://www.digitalocean.com/community/tutorials/how-to-secure-nginx-with-let-s-encrypt-on-ubuntu-22-04#step-4-obtaining-an-ssl-certificate)\\\n[SSL Server Test](https://www.ssllabs.com/ssltest/analyze)\\\n[How To Install Nginx on Ubuntu 22.04](https://www.digitalocean.com/community/tutorials/how-to-install-nginx-on-ubuntu-22-04#step-6-getting-familiar-with-important-nginx-files-and-directories)\\\n[How To Deploy a React Application with Nginx on Ubuntu](https://www.digitalocean.com/community/tutorials/deploy-react-application-with-nginx-on-ubuntu)\\\n[Skipping larger chunks while running \"Npm run build\"](https://stackoverflow.com/questions/69260715/skipping-larger-chunks-while-running-npm-run-build)\\\n[Initial Server Setup with Ubuntu 20.04](https://www.digitalocean.com/community/tutorials/initial-server-setup-with-ubuntu-20-04)\\\n[SECTION 3 HELP](https://docs.google.com/document/d/1KtK5lm2cTzs6eudFUEtBCo8Zdt3Pl-VKhlald4NzNKo/edit)\\\n[Alembic](https://alembic.sqlalchemy.org/en/latest/tutorial.html)\\\n[How To Serve Flask Applications with Gunicorn and Nginx on Ubuntu 20.04](https://www.digitalocean.com/community/tutorials/how-to-serve-flask-applications-with-gunicorn-and-nginx-on-ubuntu-20-04)\\\n[ERROR 1698 (28000): Access denied for user 'root'@'localhost'](https://stackoverflow.com/questions/56213019/how-to-add-a-favicon-to-a-next-js-static-site)\n\n## Authors\n[Clifford Mapesa](https://github.com/droffilc1)\n\n## 🤝 Ways To Contribute\n\n[](https://github.com/droffilc1/spendless#-ways-to-contribute)\n\nContributions, issues, and feature requests are welcome!\n\nFeel free to check the [issues page](https://github.com/droffilc1/spendless/issues).\n\n## Show your support\n\n[](https://github.com/droffilc1/spendless#show-your-support)\n\nGive a ⭐️ if you like this project!\n\n## 📝 License\n\n[](https://github.com/droffilc1/spendless#-license)\n\nThis project is [MIT](https://github.com/droffilc1/spendless/blob/main/LICENSE) licensed.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdroffilc1%2Fspendless","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdroffilc1%2Fspendless","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdroffilc1%2Fspendless/lists"}