SAMS SCHOOL LMS

EdTech / LMS · 2025

Next.js 15TypeScriptPrismaPostgreSQLTailwindCSSShadcn UIStripe
SAMS SCHOOL LMS

My Role: Full Stack Developer — Sole developer responsible for architecture, implementation, and deployment of the entire platform.

Overview

A full-stack Learning Management System that lets educators create, organize, and sell courses online — with structured chapters, video lessons, and Stripe-powered payments built in. Students get a clean dashboard to browse courses, enroll, and track their progress lesson by lesson.

The admin panel provides a complete course management workflow: rich text descriptions via Tiptap, drag-and-drop chapter/lesson reordering with dnd-kit, thumbnail and video uploads to AWS S3, and automatic Stripe product creation when pricing is set. Courses can be published, archived, or kept as drafts.

Authentication supports email/password with verification, plus GitHub and Google OAuth, all through Better Auth with role-based access control. Arcjet handles rate limiting and bot protection. The platform is designed to mirror production-grade EdTech products with a focus on real payment flows and scalable architecture.

Key Highlights

End-to-end Stripe integration with webhook-driven auto-enrollment

Drag-and-drop course builder with chapter and lesson reordering

Video and image uploads to AWS S3 with presigned URLs

Multi-provider OAuth (GitHub + Google) alongside email/password auth

Rich text course descriptions powered by Tiptap editor

Per-lesson progress tracking across enrolled courses

Admin analytics dashboard with data tables and Recharts

Rate limiting and bot protection via Arcjet middleware

Features

  • Browse and search courses by category and level
  • Stripe-powered enrollment and checkout
  • Per-lesson progress tracking
  • Organized chapters with video content
  • Personal dashboard for enrollments and progress
  • Course CRUD with Tiptap rich text editor
  • Drag-and-drop chapter & lesson reordering
  • AWS S3 file uploads for thumbnails and videos
  • Automatic Stripe product/price creation
  • Publish, archive, or draft courses
  • Analytics panel with data tables and charts
  • Email/password auth with email verification
  • GitHub and Google OAuth via Better Auth
  • Role-based access control (Admin / User)
  • Route protection via Next.js middleware
  • Arcjet rate limiting and bot protection
  • Stripe Checkout for secure purchases
  • Webhook handling for payment confirmation
  • Automatic enrollment on successful payment

Tech Stack

LayerTechnology
FrameworkNext.js 15 (App Router, Turbopack)
LanguageTypeScript
StylingTailwind CSS v4 + shadcn/ui
DatabasePostgreSQL + Prisma ORM (Accelerate)
AuthenticationBetter Auth (Email, GitHub, Google OAuth)
PaymentsStripe (Checkout + Webhooks)
File StorageAWS S3
Rich TextTiptap Editor
FormsReact Hook Form + Zod
Data TablesTanStack React Table
ChartsRecharts
Drag & Dropdnd-kit
EmailNodemailer + React Email (Gmail SMTP)
SecurityArcjet (rate limiting & bot protection)
DeploymentVercel

Project Structure

app
(auth)
sign-in
sign-up
layout.tsx
(course)
courses
layout.tsx
(dashboard)
(routes)
layout.tsx
api
auth
courses
stripe
webhook
uploadthing
layout.tsx
globals.css
components
ui
button.tsx
progress.tsx
data-table.tsx
modals
confirm-modal.tsx
providers
confetti-provider.tsx
editor.tsx
preview.tsx
lib
auth.ts
db.ts
stripe.ts
s3.ts
arcjet.ts
utils.ts
hooks
use-debounce.ts
use-confetti.ts
prisma
schema.prisma
middleware.ts
next.config.ts
.env
package.json
tsconfig.json

Screenshots

SAMS SCHOOL LMS screenshot 1
SAMS SCHOOL LMS screenshot 2
SAMS SCHOOL LMS screenshot 3
1 / 3