{"id":19690232,"url":"https://github.com/sugamkuber/expense-tracker","last_synced_at":"2026-06-10T03:31:19.838Z","repository":{"id":250621966,"uuid":"834510243","full_name":"SugamKuber/expense-tracker","owner":"SugamKuber","description":"A expense tracker application using microservices with golang and simple file management for tracking","archived":false,"fork":false,"pushed_at":"2024-07-29T06:03:54.000Z","size":46,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-27T10:57:18.368Z","etag":null,"topics":["excel","expense-tracker","go","golang","jwt-auth","microservice","postgress","rdbms"],"latest_commit_sha":null,"homepage":"https://github.com/SugamKuber/expense-tracker/releases/tag/v1.0","language":"Go","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/SugamKuber.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}},"created_at":"2024-07-27T13:40:25.000Z","updated_at":"2024-10-04T18:52:35.000Z","dependencies_parsed_at":"2025-01-10T08:35:19.114Z","dependency_job_id":"156ce27b-67dd-4b84-b1f2-af178168635a","html_url":"https://github.com/SugamKuber/expense-tracker","commit_stats":null,"previous_names":["sugamkuber/expense-tracker"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/SugamKuber/expense-tracker","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SugamKuber%2Fexpense-tracker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SugamKuber%2Fexpense-tracker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SugamKuber%2Fexpense-tracker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SugamKuber%2Fexpense-tracker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SugamKuber","download_url":"https://codeload.github.com/SugamKuber/expense-tracker/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SugamKuber%2Fexpense-tracker/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34136112,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-10T02:00:07.152Z","response_time":89,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["excel","expense-tracker","go","golang","jwt-auth","microservice","postgress","rdbms"],"created_at":"2024-11-11T19:04:56.393Z","updated_at":"2026-06-10T03:31:19.822Z","avatar_url":"https://github.com/SugamKuber.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# expense-tracker\nA golang based expense tracker backend \n\n### DOCS\n\n**Commands**\n\n1. Copy the Repo\n```\ngit clone https://github.com/SugamKuber/expense-tracker \u0026\u0026 cd expense-tracker\n```\n2. Set env \n```\nDB_URI=\u003cpostgresql uri\u003e\nJWT_SECRET=\u003clong secret\u003e\n```\n\n3. Start in Local:\n- put ENV VARS in `.env`\n- run `make start` to start all servers\n- run `make stop` to stop all servers\n- run `make check` to check health of all servers\n- run `make restart` to restart all servers\n- run `make clean` to clean up logs saved\n\n4. Start in docker: (Avoid this, Improvements needed)\n\n- run `docker-compose build` to build images\n- run `docker-compose up` to start servers\n- run `docker-compose stop` to stop servers\n- run `docker-compose down` to remove containers\n- run `docker-compose restart` to restart servers\n\n**Api Guide**:\n\nImport `api.postman_collection.json` in postman, Provide TOKEN=\u003cJWT TOKEN FROM LOGIN\\\u003e in Headers\n\n***Auth***\n\n- ***Signup***: POST /signup - Register a new user.\n- ***Login***: POST /login - Authenticate user and receive a JWT token.\n- ***Get User***: GET /me - Retrieve the authenticated user's information.\n- ***Change Password***: POST /change-password - Change the user's password.\n\n***Expenses***\n- ***Add Expense***: POST /add - Add a new expense.\n\nBelow are the types we can add, check postman doc for full API body\n```\nsplit_method:percentage\nsplit_method:equal\nsplit_method:exact\n```\n- ***Get My Expenses***: GET /track/me - Retrieve the authenticated user's expenses.\n- ***Get All Expenses***: GET /track/all - Get all related user's expenses.\n- ***Get All Expense as Admin***: GET /track/all/admin - Get every users in db  expenses.\n\n***Download***\n\n- ***Download My Expense***: GET /download/me - Download the authenticated user's expense in excle.\n- ***Download All Expenses***: GET /download/all - Download all users' expense in excle.\n\n***Health***\n- - ***Get Health***: GET \u003cservices\u003e/h - Check the health of services.\n\n### Improvements \u0026 Updates needed\n- Handle the services intraction with gRPC or kafka\n- Better file structure \u0026 code re use for all services\n- Handle cloud deployment automatically (pipelines \u0026 build) and configure servers for scalablity\n- Unit \u0026 Integration Tests\n\n### Sample Architecture\n![image](https://github.com/user-attachments/assets/d4ac0ffe-11c5-4aed-b7d8-f46a80683dc6)\n\nWhy different services ?\n- User auth service is related to only user stuff, Future improvements like OTP verification, OAuth can be integrated easily, This can also be used for org's Other services where auth is needed \n- Expense Tracker services has bit of more processing than user due to DB quries \u0026 validations, Which is also independent \u0026 can improve/scale easily in future  \n- File manager can take more computation than user auth \u0026 expense tracker, soo Its better to handle it in difference service, Will be helpful to handle file related updates in future as well\n\n\n### Sample excel screenshot \n(ignore the user names and values)\n\n![image](https://github.com/user-attachments/assets/872e54e7-679e-4f68-ab06-0b046e92aa23)\n\nGet All users expenses (related to the creator only, Not everyone in database)\n\n![image](https://github.com/user-attachments/assets/338f522d-d9ca-471b-9c67-bba059bf002d)\n\nGet my expenses \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsugamkuber%2Fexpense-tracker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsugamkuber%2Fexpense-tracker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsugamkuber%2Fexpense-tracker/lists"}