EduTrack is a lightweight, multi-language microservices-based platform that allows users to:
- Register and log in
- Browse public micro-courses
- Track course completion
- Receive weekly progress email summaries
This project demonstrates core DevOps and backend concepts using a polyglot architecture (Node.js, Go, Python), RESTful services, and async messaging via RabbitMQ.
| Service | Language | Description | Protocol |
|---|---|---|---|
auth-service |
Python (FastAPI) | Handles user registration & login | REST |
course-service |
Go | Serves course data (title, desc, etc.) | REST |
progress-service |
Node.js | Tracks user progress on lessons | REST |
notifier-service |
Python (FastAPI) | Sends weekly progress summary emails | Async (RabbitMQ) |
api-gateway |
Node.js | Acts as the entry point for the system | REST (HTTP) |
frontend |
Optional | React or plain HTML UI (optional) | HTTP |
- Languages: Python, Go, Node.js
- Databases:
- PostgreSQL: User accounts and progress data
- MongoDB: Courses data (flexible schema for content)
- Message Broker: RabbitMQ (for email notifications)
- Auth: JWT (JSON Web Tokens)
- Containerization: Docker
- Orchestration: Docker Compose
edutrack/
βββ services/ # All microservices live here
β βββ auth-service/ # Python (FastAPI) - JWT Auth
β β βββ app/ # FastAPI app logic
β β βββ tests/
β β βββ requirements.txt
β β βββ Dockerfile
β βββ course-service/ # Go - Course catalog
β β βββ cmd/
β β βββ internal/
β β βββ go.mod
β β βββ Dockerfile
β βββ progress-service/ # Node.js (Express) - Tracks progress
β β βββ src/
β β βββ tests/
β β βββ package.json
β β βββ Dockerfile
β βββ notifier-service/ # Python - Async email worker
β β βββ app/
β β βββ consumer.py
β β βββ Dockerfile
β β βββ requirements.txt
β βββ api-gateway/ # Node.js Express or NGINX-based Gateway
β βββ routes/
β βββ middleware/
β βββ package.json
β βββ Dockerfile
βββ frontend/ # Optional React or static frontend
β βββ public/
β βββ src/
β βββ package.json
β βββ Dockerfile
βββ infra/ # Infrastructure-as-Code (IaC)
β βββ docker/ # Docker + Compose
β β βββ docker-compose.yml
β β βββ .env
β β βββ volumes/
β βββ k8s/ # Kubernetes manifests
β β βββ base/
β β βββ overlays/dev/
β β βββ overlays/prod/
β β βββ secrets/
β βββ terraform/ # Optional: Infra provisioning (cloud)
β β βββ main.tf
β β βββ variables.tf
β βββ vault/ # Optional: Secrets as code
β βββ policy.hcl
βββ scripts/ # Dev/CI helper scripts
β βββ dev-start.sh
β βββ build-images.sh
β βββ test-all.sh
βββ shared/ # Shared libraries or proto files
β βββ utils/
β βββ logger/
β βββ proto/ # For gRPC messages if used
βββ .env # Global env variables (dev only)
βββ README.md
βββ Makefile # Task runner for dev tasks
- Docker & Docker Compose
- Git
git clone https://github.com/yourusername/edutrack.git
cd edutrack
docker-compose up --buildServices will be accessible via the API Gateway:
http://localhost:8080/
auth-serviceissues JWT tokens on login- Each service validates the token (middleware layer in Node/Go/Python)
Sample endpoints (via API Gateway on port
8080):
POST /auth/registerPOST /auth/login
GET /courses/GET /courses/:id
POST /progress/completeGET /progress/:user_id
- The
progress-servicepublishes to RabbitMQ when users complete lessons. - The
notifier-serviceconsumes weekly and sends summary emails.
users: id, username, email, hashed_passwordprogress: id, user_id, course_id, lesson_id, completed_at
courses: id, title, description, lessons: [{id, title, content}]
Each service has isolated unit/integration tests:
# Inside any service
npm test # Node.js
go test ./... # Go
pytest # Python- OAuth2 integration
- Admin panel for course creation
- In-app notifications
- Rust-based analytics service
- Rate limiting on API Gateway
- Fork the repo
- Create your branch (
git checkout -b feature/my-feature) - Commit your changes (
git commit -am 'Add my feature') - Push (
git push origin feature/my-feature) - Create a PR
MIT License Β© 2025 [manupanand-freelance-developer]