A lightweight Learning Management System (LMS) built for CAET (Computer-Aided Engineering Technology) training. Content lives on GitHub Pages while the LMS manages users, courses, topics, lessons, enrollments, and progress tracking.
- Next.js 16 with App Router
- TypeScript for type safety
- Tailwind CSS for styling
- Prisma ORM for database management
- SQLite for local development
The system manages the following entities:
- Users: Admin and student accounts
- Courses: Training courses (e.g., "CAET Foundations")
- Topics: Course topics with ordering
- Lessons: Individual lessons with GitHub Pages URLs
- Enrollments: Student course enrollments
- Progress: Individual lesson progress tracking
- Node.js 18+ installed
- npm or yarn package manager
-
Install dependencies:
npm install
-
Set up the database:
npx prisma migrate dev --name init
This creates the SQLite database and applies the schema.
-
Seed the database with sample data:
npx prisma db seed
This creates:
- 1 admin user (
admin@example.com) - 1 sample student user (
student@example.com) - 1 course ("CAET Foundations")
- 8 topics covering CAET curriculum
- 8 sample lessons (1 per topic) with placeholder GitHub URLs
- 1 active enrollment for the student
- Progress records for all lessons
- 1 admin user (
-
Run the development server:
npm run dev
-
Open your browser: Navigate to http://localhost:3000
ace-lms/
├── app/ # Next.js App Router
│ ├── layout.tsx # Root layout
│ ├── page.tsx # Home page
│ └── globals.css # Global styles with Tailwind
├── prisma/
│ ├── schema.prisma # Database schema
│ └── seed.ts # Database seed script
├── .env # Environment variables (DATABASE_URL)
├── package.json # Project dependencies
└── tsconfig.json # TypeScript configuration
npm run dev- Start development servernpm run build- Build for productionnpm start- Start production servernpm run lint- Run ESLint
npx prisma studio- Open Prisma Studio to view/edit databasenpx prisma migrate dev- Create and apply migrationsnpx prisma db seed- Run the seed scriptnpx prisma generate- Generate Prisma Client
The seed script creates:
- Admin: admin@example.com
- Student: student@example.com
8 Topics:
- Introduction to CAET
- Engineering Fundamentals
- CAD Systems
- Simulation and Analysis
- Data Management
- Automation and Scripting
- Project Management
- Industry Applications
Each topic has 1 sample lesson with a placeholder GitHub Pages URL.
- Build Authentication: Implement user login/registration
- Create Student Dashboard: Display enrolled courses and progress
- Build Course Pages: Show topics and lessons
- Implement Progress Tracking: Update lesson status as students complete them
- Add Admin Panel: Manage courses, topics, and lessons
- Connect to Real GitHub Pages: Update lesson URLs to point to actual content
- Use Prisma Studio (
npx prisma studio) to visually inspect and edit your database - The GitHub URLs in lessons are placeholders - update them to your actual GitHub Pages URLs
- Extend the schema as needed for additional features (quizzes, assignments, etc.)
ISC