A full-stack, microservices-based platform to track global disease data, maintain user watchlists, and manage authentication—all accessible through a web application.
- Project Overview
- Architecture & Tech Stack
- Prerequisites
- Repository Structure
- Setup & Installation
- Using the Application
- Common Troubleshooting
World Disease Tracking is designed to:
- Fetch and display global disease statistics (via an external-API microservice).
- Allow users to register, log in, and manage a “watchlist” of diseases/countries.
- Provide a responsive Angular UI (maps, charts, tables).
- Use Eureka for service discovery, with a Gateway routing layer for all HTTP traffic.
- Store user data in MySQL and watchlist/disease records in MongoDB.
- Eureka Discovery Server: Manages service registration/lookup.
- API Gateway: Spring Cloud Gateway routes traffic to downstream services.
- Authentication Service: Handles user registration, login (JWT tokens), password resets, backed by MySQL.
- External-API Service: Fetches global disease data from a public source (e.g., third-party API) and caches in MongoDB.
- Watchlist Service: Manages user-specific watchlist entries in MongoDB.
Tech Stack:
- Spring Boot 2.7.0
- Spring Cloud 2021.0.3
- Spring Data JPA (MySQL)
- Spring Data MongoDB
- Netflix Eureka
- Spring Cloud Gateway
- UI Framework: Angular, PrimeNG, Angular Material
- State Management: Angular services + localStorage
- Charts & Maps: Leaflet, Chart.js
- Notifications: ngx-toastr
- Routing: Angular Router with lazy-loaded modules
Ensure the following software is installed:
- Java JDK 11 or higher
- Maven 3.6+
- Node.js 14+ & npm 6+
- Angular CLI 13+ (optional but recommended)
- MySQL 8.x
- MongoDB 6.x
- Git
world_disease_tracking_app/
├── covid19-app-frontend/ # Angular frontend application
├── covid19-project/ # Backend microservices
│ ├── authentication-service/ # User authentication service
│ ├── external-api-service/ # External API integration service
│ ├── watchlist-service/ # User watchlist management service
│ ├── api-gateway/ # API Gateway for routing
│ └── discovery-service/ # Eureka Discovery Server
git clone https://github.com/Jayanth-reflex/world_disease_tracking_app.git
cd world_disease_tracking_appcd covid19-project/discovery-service
mvn clean install
mvn spring-boot:run- Create a MySQL database named
userdb. - Update MySQL credentials in
application.propertiesinsideauthentication-service. - Ensure MongoDB is running on the default port.
cd covid19-project/<service-name>
mvn clean install
mvn spring-boot:runcd covid19-app-frontend
npm install
ng serveVisit: http://localhost:4200
- Register a new account.
- Log in using your credentials.
- View global disease data on maps and charts.
- Add/remove countries or diseases to/from your personal watchlist.
- Port Conflicts: Make sure default ports (e.g., 8080, 8761) are not occupied.
- DB Connections: Check that MySQL and MongoDB are running and credentials are valid.
- CORS Issues: Verify API Gateway allows frontend origin (adjust CORS settings if needed).