📅 Project Proposal
The Learning Management System (LMS) is a microservice-driven application designed to simulate the full functionality of a modern online education platform. It emphasizes modular development, scalability, and cloud-native principles using containerized microservices. This architecture supports agile DevOps, high availability, and security across various educational operations, including course handling, payments, assessments, and more.
- Handles user registration and login (students, instructors, admins)
- Implements JWT-based session management
- Manages user roles and permissions
- Stores credentials securely (e.g., bcrypt hashing)
- Enables CRUD operations for courses
- Manages categories, prerequisites, and course metadata
- Associates courses with instructors
- Supports publishing/unpublishing of courses
- Manages video/audio/text lectures for courses
- Supports CRUD operations for lecture content
- Tracks lecture order and linkage with specific courses
- Supports time-stamped annotations and progress tracking
- Handles course payments and refunds
- Integrates with third-party payment gateways
- Generates payment receipts
- Tracks user purchases and billing history
- Manages file uploads for lecture materials, assignments, certificates
- Provides secure access to downloadable resources
- Handles file versioning and metadata tracking
- Sends notifications via email, SMS, or in-app alerts
- Triggers updates for assignment deadlines, course releases, etc.
- Supports event-driven communication across services
- Manages quizzes, tests, and exams
- Supports auto-grading and manual evaluation
- Handles attempt limits, timing, and scoring
- Links assessments to specific course modules
- Offers ticket-based or live chat student support
- Tracks issue status, response times, and resolutions
- Allows FAQs and community-based troubleshooting
- Generates certificates upon course completion
- Verifies achievement against assessment scores
- Includes instructor signatures and completion date
- Supports digital and printable certificate formats
[User]
├─ user_id (PK)
├─ username
├─ email
├─ password_hash
├─ role (student/instructor/admin)
[Course]
├─ course_id (PK)
├─ instructor_id (FK → User.user_id)
├─ title
├─ description
├─ category
├─ status (published/unpublished)
[Lecture]
├─ lecture_id (PK)
├─ course_id (FK → Course.course_id)
├─ title
├─ content_url
├─ duration
[Assessment]
├─ assessment_id (PK)
├─ course_id (FK → Course.course_id)
├─ title
├─ type (quiz/exam)
├─ total_marks
[Payment]
├─ payment_id (PK)
├─ user_id (FK → User.user_id)
├─ course_id (FK → Course.course_id)
├─ amount
├─ timestamp
[Certificate]
├─ certificate_id (PK)
├─ user_id (FK → User.user_id)
├─ course_id (FK → Course.course_id)
├─ issue_date
├─ certificate_url
Development of an Educational Platform for Online Learning Using Microservices
try to run open all backends seprately for dev
- Create a Google Cloud service account and a JSON key.
- Place key.json at the repository root.
- Create a new bucket and grant the service account access.
- Set SERVICE_NAME_BUCKET and SERVICE_CAPTCHA_CODE environment variables.
- Admin admin1@gmail.com |PWD Tu1234567@
- Lec lecturer@gmail.com |PWD Tu1234567@
- Student student@gmail.com |PWD Tu1234567@
- venv\Scripts\activate
- pip install -r requirements.txt
- python app.py
- chmod +x open_all_backend.
- ./open_all_backend.sh
docker-compose up --build
docker-compose up
