Skip to content

manupanand-freelance-developer/edutrack-prjt-19-2025

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

3 Commits
Β 
Β 

Repository files navigation

πŸŽ“ EduTrack – Microlearning Platform

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.


🧱 Architecture Overview

🧩 Microservices

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

πŸ—ƒοΈ Tech Stack

  • 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

πŸ—‚οΈ Project Structure


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



πŸš€ Getting Started

Prerequisites

  • Docker & Docker Compose
  • Git

Run Locally

git clone https://github.com/yourusername/edutrack.git
cd edutrack
docker-compose up --build

Services will be accessible via the API Gateway:

http://localhost:8080/

πŸ” API Authentication

  • auth-service issues JWT tokens on login
  • Each service validates the token (middleware layer in Node/Go/Python)

πŸ› οΈ Core Endpoints (Gateway Routed)

Sample endpoints (via API Gateway on port 8080):

Auth

  • POST /auth/register
  • POST /auth/login

Courses

  • GET /courses/
  • GET /courses/:id

Progress

  • POST /progress/complete
  • GET /progress/:user_id

πŸ“¨ Notifications (Async)

  • The progress-service publishes to RabbitMQ when users complete lessons.
  • The notifier-service consumes weekly and sends summary emails.

πŸ“¦ Database Design

PostgreSQL

  • users: id, username, email, hashed_password
  • progress: id, user_id, course_id, lesson_id, completed_at

MongoDB

  • courses: id, title, description, lessons: [{id, title, content}]

πŸ§ͺ Testing

Each service has isolated unit/integration tests:

# Inside any service
npm test      # Node.js
go test ./... # Go
pytest        # Python

πŸ“ˆ Future Improvements

  • OAuth2 integration
  • Admin panel for course creation
  • In-app notifications
  • Rust-based analytics service
  • Rate limiting on API Gateway

πŸ™Œ Contributing

  1. Fork the repo
  2. Create your branch (git checkout -b feature/my-feature)
  3. Commit your changes (git commit -am 'Add my feature')
  4. Push (git push origin feature/my-feature)
  5. Create a PR

πŸ“„ License

MIT License Β© 2025 [manupanand-freelance-developer]

About

Edutrack cource selling website with microservice architecture

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published