Course Cascade is a modern Learning Management System (LMS) built with Next.js, leveraging cloud infrastructure for scalability and performance. View the live website here.
- 🔐 Secure authentication with Clerk
- 📚 Course creation and management
- 📝 Interactive lesson content
- 📊 Student progress tracking
- 🎥 Video content streaming
- 💾 File storage and management
- 📱 Responsive design for all devices
For demonstration purposes, all Stripe payments are currently processed through a single platform account, meaning course payments go directly to the platform owner.
In a real-world marketplace scenario, the payment system would be implemented using Stripe Connect to facilitate revenue sharing between the platform and instructors. Here's how it would work:
- Instructors would onboard through Stripe Connect to create connected accounts
- When a student purchases a course for $100:
- Platform automatically keeps its fee (e.g., 20% = $20)
- Instructor automatically receives their share (e.g., 80% = $80)
- Payouts would be handled automatically to instructors' bank accounts
This marketplace payment setup is intentionally omitted from the demo but represents the proper approach for a production course marketplace platform.
- Next.js 14 (App Router)
- TypeScript
- Tailwind CSS
- Shadcn UI
- Clerk Authentication
- AWS Lambda (Serverless Functions)
- Amazon API Gateway
- Amazon DynamoDB
- Amazon S3 (File Storage)
- Amazon CloudFront (CDN)
- Amazon ECR (Container Registry)
- Node.js 18.0 or later
- AWS Account
- Clerk Account
- npm or pnpm
- Clone the repository:
git clone https://github.com/yourusername/course-cascade.git
cd course-cascade
- Install dependencies:
npm install
# or
pnpm install
- Set up environment variables:
cp .env.example .env.local
Fill in your environment variables:
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=
CLERK_SECRET_KEY=
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_REGION=
# ... other environment variables
- Run the development server:
npm run dev
# or
pnpm dev
Open http://localhost:3000 to view the application.
- Push your code to GitHub
- Import your repository to Vercel
- Configure environment variables
- Deploy
- Configure AWS CLI
- Deploy AWS resources using Infrastructure as Code (IaC)
- Set up CI/CD pipeline
Detailed deployment instructions can be found in the deployment documentation.
┌─────────────────┐
│ Next.js App │
└─────────────────┘
│
├────────────────────────────┐
▼ ▼
┌─────────────────┐ ┌──────────────┐
│ Clerk Auth │ │ CloudFront │
└─────────────────┘ └──────────────┘
│ │
▼ ▼
┌─────────────────┐ ┌──────────────┐
│ Vercel │ │ S3 │
└─────────────────┘ └──────────────┘
│
▼
┌─────────────────┐
│ API Gateway │
└─────────────────┘
│
▼
┌─────────────────┐ ┌──────────────┐
│ AWS Lambda │◀────│ ECR │
└─────────────────┘ └──────────────┘
│
├────────────────────────────┐
▼ ▼
┌─────────────────┐ ┌──────────────┐
│ DynamoDB │ │ S3 │
└─────────────────┘ └──────────────┘
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add some amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- EdRoh for the project inspiration
- Next.js team for the amazing framework
- Vercel for hosting and deployment
- AWS for cloud infrastructure
- Clerk for authentication services
Built with ❤️ using Next.js