This project is an enterprise-grade full-stack Learning Management Application built using modern technologies such as Next.js, Node.js, AWS, Docker, and Clerk. The application is designed to be scalable, secure, and efficient, offering an optimal learning experience with features like course management, billing, and authentication.
You can explore the demo of the Learning Management System here:
Demo LInk ->
- Diagrams: View Diagrams
- Description
- Tech Stack
- Frontend Setup
- Backend Setup
- Authentication with Clerk
- AWS Setup
- Docker Setup
- Deployment
- Links to Tools and Resources
Learning Management System (LMS) with Next.js, Node.js, and AWS services. The application consists of a frontend, backend, and various integrations that help create a fully-fledged scalable LMS. This project uses Clerk for authentication, DynamoDB for database storage, S3 for file storage, and AWS Lambda for serverless functions.
- Frontend: Next.js, Redux Toolkit, Tailwind CSS, Shadcn, TypeScript, Framer Motion, React Hook Form, Zod, and Stripe for managing payments.
- Backend: Node.js, Express.js, Docker, AWS Lambda, API Gateway, DynamoDB, S3, CloudFront.
- Authentication: Simplified using Clerk.
- Hosting: The frontend is hosted on Vercel.
- Next.js: A React framework for building static and dynamic web applications.
- Redux Toolkit: For state management.
- Tailwind CSS: For utility-first styling.
- Shadcn UI: UI components for building beautiful user interfaces.
- React Hook Form: For handling form validation.
- Zod: For schema validation.
- Framer Motion: For animations.
- Stripe: For managing payments and subscriptions.
- Node.js: Server-side JavaScript runtime.
- Express.js: Web application framework for Node.js.
- DynamoDB: AWS's NoSQL database service.
- AWS Lambda: Serverless compute service.
- API Gateway: To expose backend APIs.
- S3 & CloudFront: For file storage and content delivery.
- Clerk: Simplified authentication and user management.
- Frontend: Hosted on Vercel.
- Backend: Hosted on AWS Lambda with API Gateway.
- Clone the repository:
git clone git@github.com:e-nk/learning-mgmt.git cd learning-mgmt
- Install dependencies:
npm install --legacy-peer-deps
- Run the development server:
npm run dev
- Visit http://localhost:3000 in your browser to see the app in action.
-
Install the backend dependencies:
npm install --legacy-peer-deps
-
Configure AWS credentials using the AWS CLI:
aws configure
-
Set up local DynamoDB (for local development):
-
For local testing, use Postman to interact with the APIs:
- Sign up for a Clerk account:
- Clerk Website
- Integrate Clerk in the frontend and backend as per the provided tutorial.
- Use Clerk's pre-built UI components and hooks to handle authentication flows.
-
Install Docker:
-
Docker Commands:
-
Build the Docker images:
docker build -t learning-mgmt .
-
Run the Docker containers:
docker run -p 3000:3000 learning-mgmt
-
- Push your frontend code to GitHub.
- Connect your GitHub repository to Vercel and deploy.
- Deploy backend functions to Lambda using AWS CLI or the Serverless Framework.
This project was made with ❤️ and ☕ by: