https://eduforge-3jkj-git-main-csprl1s-projects.vercel.app/
| Role | Password | |
|---|---|---|
| Student | student@eduforge.dev | Student@123 |
| Instructor | instructor@eduforge.dev | Instructor@123 |
| Admin | admin@eduforge.dev | Admin@123 |
EduForge is a production-grade AI-powered Learning Management System (LMS) that goes far beyond basic CRUD. It solves a real edtech problem: learners need more than static content β they need interactive testing and rapid comprehension tools. EduForge delivers this through Groq-powered AI that generates contextually accurate quizzes and lesson summaries from actual course content.
- AI quiz generation β eliminates hours of manual question writing for instructors
- Instant summaries β helps students absorb lessons faster
- Role-based multi-tenancy β students, instructors, and admins all have tailored experiences
- Built on Next.js 15 App Router β maximum SSR/SSG performance, SEO-ready
- Course Management β Create, read, update, delete courses with rich metadata (category, level, tags, price)
- Lesson Builder β Markdown-powered lesson editor with video embed support
- Enrollment System β One-click enrollment with progress tracking
- Progress Tracking β Per-course percentage progress with visual indicators
- AI Quiz Generator β Generates 5 MCQs from lesson content with explanations
- AI Lesson Summarizer β Produces key takeaways and TL;DR from any lesson
- Graceful fallback β Works in demo mode without an API key
- Credential auth β bcrypt-hashed passwords, Zod-validated inputs
- OAuth ready β Google & GitHub providers (add credentials to enable)
- JWT sessions β Stateless, scalable
- Role-based access β STUDENT / INSTRUCTOR / ADMIN with middleware enforcement
- Route protection β middleware.ts guards all sensitive routes
- User management with role promotion/demotion
- Platform-wide analytics (users, courses, enrollments)
- Course oversight with quick edit/view links
eduforge/
βββ app/
β βββ (auth)/login|register/ # Public auth pages
β βββ (dashboard)/ # Protected layout
β β βββ dashboard/ # Main dashboard (SSR)
β β βββ courses/ # Course catalog + detail + editor
β β β βββ [id]/lesson/[lessonId]/ # Lesson viewer + AI tools
β β βββ profile/ # User profile
β β βββ admin/ # Admin panel
β βββ api/
β β βββ auth/[...nextauth]/ # NextAuth handler
β β βββ courses/ # Course CRUD + enroll
β β βββ lessons/ # Lesson CRUD
β β βββ enrollments/ # Enrollment queries
β β βββ users/ # Register + profile update
β β βββ admin/ # Admin-only actions
β β βββ ai/generate-quiz|summarize/ # Groq AI endpoints
β βββ page.tsx # Landing page
βββ components/
β βββ ui/ # Design system primitives
β βββ courses/ # Course cards, forms, lesson viewer
β βββ ai/ # AI quiz + summary panels
β βββ admin/ # Admin action components
β βββ dashboard/ # Profile edit form
β βββ layout/ # Navbar, Footer
βββ lib/
β βββ auth.ts # NextAuth config
β βββ db.ts # Prisma singleton
β βββ utils.ts # Helpers + constants
β βββ validations.ts # Zod schemas
βββ prisma/
β βββ schema.prisma # Full data model
β βββ seed.ts # Demo data seeder
βββ middleware.ts # Route protection
| Layer | Technology |
|---|---|
| Framework | Next.js 15 (App Router, TypeScript) |
| Database | PostgreSQL via Neon / Railway |
| ORM | Prisma 6 |
| Auth | NextAuth.js v4 (JWT + Credentials) |
| Styling | Tailwind CSS 3 + Radix UI |
| AI | Groq API (Llama 3.1-8b-instant) |
| Validation | Zod |
| Deployment | Vercel |
- Passwords hashed with bcrypt (12 rounds)
- Zod validation on all API inputs (prevents injection)
- Middleware-enforced route guards (not just client-side)
- CSRF protection via NextAuth
- Authorization checks on every mutation (owner/admin only)
- Environment secrets never exposed to client
- Server Components for all data-fetching pages (zero client JS for static content)
- Parallel data fetching with
Promise.allacross dashboard queries - Prisma select β only fetch fields needed (no over-fetching)
- next/font β Google Fonts loaded at build time, zero CLS
- Streaming β Next.js suspense-ready architecture
- Image optimization via
next/image
git clone https://github.com/yourusername/eduforge
cd eduforge
npm installcp .env.example .env.localFill in:
DATABASE_URL="postgresql://user:password@host:5432/eduforge"
NEXTAUTH_URL="http://localhost:3000"
NEXTAUTH_SECRET="$(openssl rand -base64 32)"
GROQ_API_KEY="your-key-from-console.groq.com" # Free tier available# Push schema (development)
npm run db:push
# Or run migrations (production)
npm run db:migrate
# Seed demo data
npm run db:seednpm run dev
# β http://localhost:3000npm i -g vercel
vercel
# Add environment variables in Vercel dashboardRecommended DB providers:
User βββ Course (instructor creates many)
βββ Enrollment (student enrolls in many)
βββ QuizAttempt
βββ Review
Course βββ Lesson (ordered)
βββ Quiz (AI-generated)
βββ Enrollment
βββ Review
Lesson βββ LessonProgress
βββ Quiz
| Method | Endpoint | Auth | Description |
|---|---|---|---|
| GET | /api/courses |
Public | List courses (filterable) |
| POST | /api/courses |
Instructor+ | Create course |
| GET | /api/courses/:id |
Public | Get course details |
| PATCH | /api/courses/:id |
Owner/Admin | Update course |
| DELETE | /api/courses/:id |
Owner/Admin | Delete course |
| POST | /api/courses/:id/enroll |
Student | Enroll in course |
| POST | /api/lessons |
Instructor+ | Create lesson |
| PATCH | /api/lessons/:id |
Owner/Admin | Update lesson |
| DELETE | /api/lessons/:id |
Owner/Admin | Delete lesson |
| POST | /api/ai/generate-quiz |
Any auth | Generate AI quiz |
| POST | /api/ai/summarize |
Any auth | Generate AI summary |
| POST | /api/users/register |
Public | Register new user |
| PATCH | /api/users/:id |
Self/Admin | Update profile |
| PATCH | /api/admin/users/:id/role |
Admin only | Change user role |
Prathamesh Ugale
- GitHub: @csprl1
- LinkedIn: linkedin.com/in/prathamesh-ugale-1aa536138
MIT β built for the House of Edtech Fullstack Assignment, Jan 2026.