How strongvu/vicourses-elearning-platform works
Vicourses is a microservices e-learning platform: students browse courses and learn from video and quizzes, while instructors manage course curricula and admins manage users and courses. The backend also supports enrollment, ratings, wishlists, coupons, payments, search, and asynchronous video processing. The sampled course controller delegates course and enrollment operations to application services; other sampled controllers delegate their own features. The README documents broader client, instructor, and admin capabilities that are represented here at their directory level. Some subsystem links are documented capabilities rather than inspected call sites.
Main entry points: CoursesController.cs Course API · Program.cs API gateway · WishlistController.cs Wishlist API · RatingsController.cs Ratings API
Components 33
Client applications
- Client web
frontend/vicourses_client_web - Admin web
frontend/vicourses_admin_web - Mobile app
frontend/vicourses_mobile_app
API entry
- API gateway
backend/ApiGateway/Program.cs
Course learning
- Course API
backend/services/CourseService/CourseService.API/Controllers/CoursesController.cs - Course operations
backend/services/CourseService/CourseService.Application/Services/CourseService.cs - Curriculum management
backend/services/CourseService/CourseService.Application/Services/CourseCurriculumService.cs - Lesson domain
backend/services/CourseService/CourseService.Domain/Models/Lesson.cs - Paging requests
backend/services/CourseService/CourseService.API/Requests/PagingRequest.cs - Enrollment repository
backend/services/CourseService/CourseService.Infrastructure/Repositories/EnrollmentRepository.cs - Course event handler
backend/services/CourseService/CourseService.Application/DomainEventHandlers/Course/CoursePreviewVideoUpdatedDomainEventHandler.cs
Commerce and discovery
- Course search
backend/services/SearchService/SearchService.API/Application/Services/CoursesQueryService.cs - Wishlist API
backend/services/WishlistService/WishlistService.API/Controllers/WishlistController.cs - Wishlist service
backend/services/WishlistService/WishlistService.API/Application/Services/WishlistService.cs - Wishlist model
backend/services/WishlistService/WishlistService.API/Models/Wishlist.cs - Ratings API
backend/services/RatingService/RatingService.API/Controllers/RatingsController.cs - Rating service
backend/services/RatingService/RatingService.API/Application/Services/RatingService.cs - Rating model
backend/services/RatingService/RatingService.API/Models/Rating.cs - Payments API
backend/services/PaymentService/PaymentService.API/Controllers/PaymentsController.cs - Payment service
backend/services/PaymentService/PaymentService.API/Application/Services/PaymentService.cs - Payment model
backend/services/PaymentService/PaymentService.API/Models/Payment.cs - Coupon management
backend/services/DiscountService/DiscountService.API/Controllers/CouponsController.cs
Platform integrations
- Video event contracts
backend/services/CourseService/CourseService.Application/IntegrationEvents/VideoProcessing/RequestVideoProcessingIntegrationEvent.cs - Storage event contracts
backend/services/CourseService/CourseService.Application/IntegrationEvents/Storage/DeleteFilesIntegrationEvent.cs - Video processing
backend/services/video_processing_service - File storage
backend/services/storage_service/src/services/s3-upload.service.ts - Elasticsearch
- PayPal
- Email service
backend/services/email_service/src/controllers/healthchecks.controller.ts - MongoDB
Other components
- Students
- Instructors
- Administrators
Connections 29
- Students → Client web: use
- Instructors → Client web: manage courses
- Administrators → Admin web: manage platform
- Students → Mobile app: learn
- Client web → API gateway: request APIs
- Admin web → API gateway: request APIs
- Mobile app → API gateway: request APIs
- API gateway → Course API: routes requests
- Course API → Course operations: delegates course operations
backend/services/CourseService/CourseService.API/Controllers/CoursesController.cs - Course API → Curriculum management: requests curriculum
backend/services/CourseService/CourseService.API/Controllers/CoursesController.cs - Course API → Enrollment repository: checks enrollment
- Enrollment repository → MongoDB: reads and counts
backend/services/CourseService/CourseService.Infrastructure/Repositories/EnrollmentRepository.cs - Course API → Paging requests: accepts paging
- Course event handler → Video event contracts: publishes processing request
backend/services/CourseService/CourseService.Application/DomainEventHandlers/Course/CoursePreviewVideoUpdatedDomainEventHandler.cs - Course event handler → Storage event contracts: publishes file deletion
backend/services/CourseService/CourseService.Application/DomainEventHandlers/Course/CoursePreviewVideoUpdatedDomainEventHandler.cs - Video event contracts → Video processing: requests processing
- Storage event contracts → File storage: requests deletion
- Course search → Elasticsearch: searches index
backend/services/SearchService/SearchService.API/Application/Services/CoursesQueryService.cs - Wishlist API → Wishlist service: delegates wishlist operations
backend/services/WishlistService/WishlistService.API/Controllers/WishlistController.cs - Wishlist API → Wishlist model: returns wishlist data
backend/services/WishlistService/WishlistService.API/Controllers/WishlistController.cs - Ratings API → Rating service: delegates rating operations
backend/services/RatingService/RatingService.API/Controllers/RatingsController.cs - Ratings API → Rating model: returns rating data
backend/services/RatingService/RatingService.API/Controllers/RatingsController.cs - Payments API → Payment service: delegates payment operations
backend/services/PaymentService/PaymentService.API/Controllers/PaymentsController.cs - Payments API → Payment model: returns payment data
backend/services/PaymentService/PaymentService.API/Controllers/PaymentsController.cs - Payment service → PayPal: processes payments
- Coupon management → Payment service: applies discounts
- Course API → Ratings API: exposes course ratings
- Course API → Wishlist API: supports wishlisting
- Email service → Students: sends notices