Skip to content

Repository files navigation

VeoLMS - A Course Marketplace

Why Course Marketplace Implementation

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

Technologies Used

-- 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

Directory Structure

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

Why Better Auth not own implementation ?

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.

Why Session based authentication instead of Stateless (JWT) ?

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.

About

A production grade LMS platform

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages