A modern Learning Management System (LMS) built with Next.js, TypeScript, and Firebase.
- User Authentication: Email/password and Google sign-in
- Course Management: Browse, search, and filter courses
- Enrollment System: Stripe integration for course payments
- User Dashboard: Track progress and manage enrolled courses
- Admin Panel: Manage courses, users, and view analytics
- Responsive Design: Mobile-first approach with Tailwind CSS
- Dark Mode: Full support for light and dark themes
Check out these video demonstrations of the platform:
- Frontend: Next.js 15 (App Router), React, TypeScript
- Styling: Tailwind CSS, Shadcn UI, Radix UI
- Authentication: Firebase Authentication
- Database: Firebase Firestore
- Payments: Stripe
- State Management: React Context API
- Deployment: Vercel
- Node.js 18+ and npm
- Firebase account
- Stripe account (for payment processing)
-
Clone the repository:
git clone https://github.com/romanh24/lms-project.git cd lms-project
-
Install dependencies:
npm install
-
Set up environment variables: Create a
.env.local
file in the root directory with the following variables:# Firebase Configuration NEXT_PUBLIC_FIREBASE_API_KEY=your_firebase_api_key NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN=your_firebase_auth_domain NEXT_PUBLIC_FIREBASE_PROJECT_ID=your_firebase_project_id NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET=your_firebase_storage_bucket NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID=your_firebase_messaging_sender_id NEXT_PUBLIC_FIREBASE_APP_ID=your_firebase_app_id NEXT_PUBLIC_FIREBASE_MEASUREMENT_ID=your_firebase_measurement_id # App Configuration NEXT_PUBLIC_APP_URL=http://localhost:3000 # Stripe Configuration NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=your_stripe_publishable_key STRIPE_SECRET_KEY=your_stripe_secret_key
-
Run the development server:
npm run dev
-
Open http://localhost:3000 in your browser.
Use these credentials to test the application:
- Email: [email protected]
- Password: 123456
- Email: [email protected]
- Password: 123456
src/
├── app/ # Next.js App Router pages
├── components/ # React components
│ ├── admin/ # Admin-specific components
│ ├── auth/ # Authentication components
│ ├── layout/ # Layout components
│ ├── profile/ # Profile components
│ ├── theme/ # Theme components
│ └── ui/ # UI components (Shadcn UI)
├── lib/ # Utility functions and shared code
│ ├── context/ # React Context providers
│ ├── data/ # Mock data
│ ├── firebase/ # Firebase configuration
│ └── types/ # TypeScript types
└── middleware.ts # Next.js middleware for route protection
For testing Stripe payments, use the following test card:
- Card number: 4242 4242 4242 4242
- Expiry: Any future date
- CVC: Any 3 digits
This project is licensed under the MIT License - see the LICENSE file for details.