LMS is an umbrella term to describe many kind of Learning Management Systems like:
- Single Tenant LMS
- Multi Tenant LMS
- Course Marketplace
Because Sir, you have mentioned in VeoLMS Challenge Doc, that VeoLMS is inspired by Udemy, so i choosed this implementation
-- create a tech stack table with cloumn layer, technology
| Layer | Technology |
|---|---|
| Frontend | Next.js, React, Tailwind CSS, Shadow UI |
| Backend | Node.js, Express.js |
| Auth | Better Auth with Session based authentication |
| Database | PostgreSQL |
| ORM | Drizzle |
| Blob Storage | AWS S3, Cloudflare R2 |
| Queue and Orchestration | Inngest |
| Frontend Deployment | Vercel |
| Backend Deployment | Cloudflare Workers |
| Deployment Video Processing | AWS Lambda, ECS Fargate |
VeoLMS/
├── apps/
│ ├── frontend/ # Next.js Frontend
│ ├── backend/ # Node.js/Express.js Backend
│ ├── pipeline/ # Inngest function for video processing (AWS Lambda)
│ └── trancoder/ # Video transcoding service (AWS ECS)
├── packages/ # Shared packages
│ ├── db/ # Drizzle ORM + PostgreSQL
└── README.md # This file
Authentication is Solved problem, better auth is a battle tested and secure authentication solution, so i choosed this implementation instead of own implementation. If we need more complex auth features in future, we can easily integrate with better auth.
Session based authentication is choosen because it is more secure obviously,and it is more suitable for our use case because we are building a course marketplace, where content piracy is a big concern, so we need to restrict user to access the platform from one device only.