{"id":29311538,"url":"https://github.com/skew008/expense-tracker","last_synced_at":"2026-04-09T07:02:33.314Z","repository":{"id":301478277,"uuid":"1002875485","full_name":"Skew008/Expense-Tracker","owner":"Skew008","description":"A production-grade expense tracking system designed using a microservices architecture. It includes modular services for authentication, expense management, budgeting goals, analytics, and monthly reporting. Each service is containerized using Docker and discoverable via Eureka, with centralized routing handled through an API Gateway.","archived":false,"fork":false,"pushed_at":"2025-06-27T14:43:49.000Z","size":92,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-07-07T08:15:09.490Z","etag":null,"topics":["docker","docker-compose","java","microservices","mysql-database","spring-boot","spring-cloud","spring-data-jpa","spring-security"],"latest_commit_sha":null,"homepage":"","language":"Java","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/Skew008.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}},"created_at":"2025-06-16T09:24:23.000Z","updated_at":"2025-06-27T14:43:52.000Z","dependencies_parsed_at":"2025-06-27T04:57:29.464Z","dependency_job_id":"2bf49828-80d5-467a-86b9-a78a7036fe6d","html_url":"https://github.com/Skew008/Expense-Tracker","commit_stats":null,"previous_names":["skew008/expense-tracker"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Skew008/Expense-Tracker","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Skew008%2FExpense-Tracker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Skew008%2FExpense-Tracker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Skew008%2FExpense-Tracker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Skew008%2FExpense-Tracker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Skew008","download_url":"https://codeload.github.com/Skew008/Expense-Tracker/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Skew008%2FExpense-Tracker/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":268531912,"owners_count":24265250,"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","status":"online","status_checked_at":"2025-08-03T02:00:12.545Z","response_time":2577,"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":["docker","docker-compose","java","microservices","mysql-database","spring-boot","spring-cloud","spring-data-jpa","spring-security"],"created_at":"2025-07-07T08:15:07.320Z","updated_at":"2025-12-30T21:50:38.004Z","avatar_url":"https://github.com/Skew008.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 📘 Expense Tracker with Budgeting Goals\n\nA backend system built using **Java**, **Spring Boot**, **Spring Cloud**, and **Docker** that allows users to track expenses, set budgeting goals, and view analytics of their spending habits.\n\n\n## 🚀 Features\n\n- **User Authentication** using JWT\n- **Expense Tracking** with category and tags\n- **Budget Goal Setting** (monthly/weekly)\n- **Spending Analytics** (by category/date)\n- **Report Service**: Generate and email monthly reports\n- **Service Discovery** using Eureka\n- **API Gateway** for centralized routing\n- **Dockerized Microservices** with MySQL\n\n\n## 🧱 Microservices Architecture\n\n| Service              | Port  | Description                          |\n|----------------------|-------|--------------------------------------|\n| `eureka-server`      | 8761  | Service discovery                    |\n| `api-gateway`        | 8080  | Gateway for routing APIs            |\n| `auth-service`       | 8081  | User registration, login, JWT auth  |\n| `expense-service`    | 8082  | Add, view, delete expenses          |\n| `goal-service`       | 8083  | Set and track budget goals          |\n| `analytics-service`  | 8084  | Analyze spending trends             |\n| `report-service`     | 8085  | Send Monthly Reports                |\n| `mysql`              | 3306  | Shared relational database          |\n\n\n## 🧰 Tech Stack\n\n- **Java 17**\n- **Spring Boot 3**\n- **Spring Cloud Netflix Eureka**\n- **Spring Security + JWT**\n- **Spring Data JPA**\n- **MySQL**\n- **Docker + Docker Compose**\n\n\n## 🐳 Run with Docker Compose\n\n### 1. Build JARs for all services\n\n```bash\ncd auth-service \u0026\u0026 mvn clean package -DskipTests=true \u0026\u0026 cd ..\ncd expense-service \u0026\u0026 mvn clean package -DskipTests=true \u0026\u0026 cd ..\ncd goal-service \u0026\u0026 mvn clean package -DskipTests=true \u0026\u0026 cd ..\ncd analytics-service \u0026\u0026 mvn clean package -DskipTests=true \u0026\u0026 cd ..\ncd report-service \u0026\u0026 mvn clean package -DskipTests=true \u0026\u0026 cd ..\ncd api-gateway \u0026\u0026 mvn clean package -DskipTests=true \u0026\u0026 cd ..\ncd eureka-server \u0026\u0026 mvn clean package -DskipTests=true \u0026\u0026 cd ..\n```\n\n### 2. Build and start all services with Docker Compose\n\n```bash\ndocker-compose up --build\n```\n\n### 3. Visit the services:\n\n- **Eureka Server:** [http://localhost:8761](http://localhost:8761)\n- **API Gateway:** [http://localhost:8080](http://localhost:8080)\n\n\n## 🔐 Sample Endpoints\n\n| Method | Endpoint                     | Description                  |\n|--------|------------------------------|------------------------------|\n| POST   | `/auth/register`             | Register a new user         |\n| POST   | `/auth/login`                | Login and get JWT token     |\n| GET    | `/api/expense`              | List all expenses           |\n| POST   | `/api/goal`                 | Create a budget goal        |\n| GET    | `/api/analytics/overview`     | View analytics summary     |\n\n\n## 📦 Environment Variables (used in Docker Compose)\n\nEach service reads DB config like:\n\n```properties\nSPRING_DATASOURCE_URL=jdbc:mysql://mysql:3306/expense_tracker\nSPRING_DATASOURCE_USERNAME=root\nSPRING_DATASOURCE_PASSWORD=root\n```\n\n\n## 🧪 Future Enhancements\n\n- Email/SMS reminders\n- User roles and admin panel\n- OAuth2 / Google login\n- Export data as CSV\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fskew008%2Fexpense-tracker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fskew008%2Fexpense-tracker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fskew008%2Fexpense-tracker/lists"}