This application is a feature-rich e-learning platform that allows users to browse, purchase, and interact with courses. It offers both student and teacher modes, providing a seamless learning and course creation experience.
- Browse and filter courses
- Purchase courses securely using Stripe
- Track progress: mark chapters as completed or uncompleted
- Course progress calculation for each course
- Student Dashboard for a personalized learning experience
- Create new courses with chapters
- Reorder chapters easily with drag-and-drop functionality
- Upload thumbnails, attachments, and videos via UploadThing
- Rich text editor for detailed chapter descriptions
- Teacher Dashboard to manage courses efficiently
- Video processing powered by Mux
- HLS video player integrated with Mux for smooth streaming
- Secure and scalable authentication using Clerk
- Built on MySQL using Planetscale
- ORM implemented via Prisma
To get started with the repository, you need Node.js and NPM installed on your machine. After cloning the repository, install the dependencies by running the following commands:
npm install
npm run devFor local development, set up your environment variables and use the following services:
- Vercel: For serverless hosting (Vercel)
- Mux: For video storage and streaming (Mux)
- Clerk: For authentication (Clerk)
- MongoDB Atlas: For cloud database (MongoDB Atlas)
- UploadThing: For serverless file uploads (UploadThing)
- Stripe: For payment processing (Stripe)
To deploy to production, ensure you have accounts for the services listed above. Set your environment variables for production use and deploy with Vercel or your preferred hosting service.
To reset the database during development, run the following commands:
npx prisma migrate reset
npx prisma db pushThis will reset and push your Prisma schema to the Planetscale MySQL database.
This project is open source and available under the MIT License.