A modern cybersecurity e-learning platform with gamification. Master ethical hacking, penetration testing, and security operations through hands-on training.
# 1. Install dependencies
npm install
# 2. Set up environment
cp .env.local.example .env.local
# Edit .env.local with your Supabase credentials
# 3. Start development server
npm run devAccess: http://localhost:3000
| Guide | Description |
|---|---|
| QUICK-START.md | Prerequisites & setup options |
| DEPLOYMENT.md | Local, Docker & production deployment |
| GAMIFICATION_GUIDE.md | Points, badges & leaderboard system |
| STRIPE-SETUP.md | Payment integration |
| MANUAL-PAYMENT-SETUP.md | Bank transfer workflow |
Additional docs: See docs/ folder for testing guides, content creation, and course templates.
- Multi-role System - Admin, Mentor, Student with approval workflows
- Course Builder - Chapters, lessons, video hosting (Cloudinary)
- Assessments - Auto-graded quizzes with multiple question types
- Progress Tracking - Per-lesson completion with video position
- Certificates - Auto-generated on course completion
- Points - Earn 100-275 per quiz, 200-800 per course
- 25 Skills - Web Security, Network Security, Cryptography, Forensics, etc.
- 15 Badges - Bronze to Platinum tier achievements
- Leaderboard - Global rankings with streak tracking
- Progression - Beginner → Intermediate → Advanced → Expert
- Stripe - Automated checkout with webhooks
- Manual - Bank transfer with admin approval
- Authentication - Email/password + Google OAuth (Supabase Auth)
- Row Level Security - Database-level access control
- Protected Routes - Middleware-based authorization
| Layer | Technology |
|---|---|
| Framework | Next.js 15 (App Router) + TypeScript |
| UI | shadcn/ui + Tailwind CSS |
| Database | Supabase (PostgreSQL) |
| Auth | Supabase Auth |
| Media | Cloudinary |
| Payments | Stripe |
| Deploy | Netlify / Docker |
app/
├── (auth)/ # Login, register
├── admin/ # User management, enrollment requests
├── mentor/ # Course creation
├── courses/ # Browse, learn, enroll
├── dashboard/ # Student dashboard
├── leaderboard/ # Rankings
├── skills/ # Skill tracking
└── api/ # Checkout, webhooks
lib/actions/ # Server actions (auth, courses, payments, gamification)
database/ # SQL schemas and seed files
| Term | Description | Database |
|---|---|---|
| Course | Complete learning unit | courses |
| Chapter | Section within a course | materials |
| Lesson | Individual content piece | sub_materials |
| Quiz | Auto-graded assessment | quests |
| Mentor | Course creator | profiles (role='mentor') |
| Skill | Tracked competency | skills, student_skills |
| Badge | Achievement milestone | badges, student_badges |
# Development
npm run dev # Start with Turbopack
npm run build # Production build
npm run lint # ESLint check
# Docker Staging
npm run docker:staging:up:build # Start with PostgreSQL
npm run docker:staging:down # Stop services
# Docker Production
npm run docker:prod:up:build # Production-like environment# Required - Supabase
NEXT_PUBLIC_SUPABASE_URL=https://xxx.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=your_anon_key
SUPABASE_SERVICE_ROLE_KEY=your_service_role_key
# Required - Cloudinary
CLOUDINARY_CLOUD_NAME=your_cloud
NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME=your_cloud
# Optional - Stripe
NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=pk_xxx
STRIPE_SECRET_KEY=sk_xxx
STRIPE_WEBHOOK_SECRET=whsec_xxx
# App
NEXT_PUBLIC_APP_URL=http://localhost:3000See .env.local.example for the complete template.
20+ tables with Row Level Security:
- Core: profiles, courses, materials, sub_materials, enrollments, progress, quests, certificates, payments
- Gamification: skills, student_skills, badges, student_badges, leaderboard_stats, point_history
Seed scripts: database/seed-skills.sql, seed-badges.sql, seed-tools.sql
| Service | Limit |
|---|---|
| Supabase | 500MB DB, 50K users |
| Cloudinary | 25GB storage |
| Netlify | 100GB bandwidth |
ISC License - See LICENSE
Version: 2.0.1 | Updated: January 2026
Built with Next.js 15 | TypeScript | Supabase | Tailwind CSS