A modern, full-featured Learning Management System built with Next.js 15, specialized for creating and managing educational content.
- 🎓 Comprehensive Course Management: Create, edit, and publish courses with ease.
- 🏗️ Drag & Drop Curriculum Builder: Intuitively organize chapters and lessons using a powerful drag-and-drop interface (powered by
@dnd-kit). - 📝 Rich Content Editor: Author lessons using a rich text editor (Tiptap) with support for advanced formatting.
- ☁️ Media Management: Seamlessly upload and manage video and image assets via AWS S3.
- 🔐 Secure Authentication: Robust user authentication and session management powered by Better Auth.
- 📊 Instructor Dashboard: Dedicated area for instructors to manage their courses and content.
- 🎨 Modern UI/UX: Responsive and accessible design built with Tailwind CSS 4 and Radix UI primitives.
- Framework: Next.js 15 (App Router)
- Language: TypeScript
- Database: PostgreSQL
- ORM: Prisma
- Styling: Tailwind CSS 4
- Components: Radix UI, Lucide React
- Authentication: Better Auth
- File Storage: AWS S3
- Forms: React Hook Form + Zod
- Drag & Drop: dnd-kit
- Animations: Motion (Framer Motion)
- Node.js (v20+ recommended)
- PostgreSQL database
- AWS S3 Bucket for file storage
-
Clone the repository
git clone https://github.com/yourusername/lms.git cd lms -
Install dependencies
npm install # or pnpm install # or yarn install
-
Set up Environment Variables
Create a
.envfile in the root directory and add the following variables:# Database DATABASE_URL="postgresql://user:password@localhost:5432/lms_db?schema=public" # Authentication (Better Auth) BETTER_AUTH_SECRET="your-secret-key" BETTER_AUTH_URL="http://localhost:3000" # AWS S3 Storage AWS_ACCESS_KEY_ID="your-aws-access-key" AWS_SECRET_ACCESS_KEY="your-aws-secret-key" AWS_REGION="us-east-1" AWS_BUCKET_NAME="your-bucket-name" # Email (Resend) - Optional but recommended for auth emails RESEND_API_KEY="re_..."
-
Initialize the Database
Push the Prisma schema to your database:
npx prisma generate npx prisma db push
-
Run the Development Server
npm run dev
Open http://localhost:3000 with your browser to see the result.
app/: Next.js App Router pages and API routes.components/: Reusable UI components.hooks/: Custom React hooks.lib/: Utility functions and shared logic.prisma/: Database schema and migrations.public/: Static assets.
Contributions are welcome! Please feel free to submit a Pull Request.
This project is licensed under the MIT License.