Skip to content

A Scalable Learning Management Application with **Next.js**, **Node.js**, and **AWS**.

Notifications You must be signed in to change notification settings

e-nk/learning-mgmt

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Learning Management System (LMS)

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.

Demo

You can explore the demo of the Learning Management System here:
Demo LInk ->

Diagrams and Assets


Table of Contents

  1. Description
  2. Tech Stack
  3. Frontend Setup
  4. Backend Setup
  5. Authentication with Clerk
  6. AWS Setup
  7. Docker Setup
  8. Deployment
  9. Links to Tools and Resources

Description

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.

Features:

  • 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.

Tech Stack

Frontend

  • 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.

Backend

  • 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.

Authentication

  • Clerk: Simplified authentication and user management.

Hosting and Deployment

  • Frontend: Hosted on Vercel.
  • Backend: Hosted on AWS Lambda with API Gateway.

Frontend Setup

Install Dependencies

  1. Clone the repository:
    git clone git@github.com:e-nk/learning-mgmt.git
    cd learning-mgmt
  2. Install dependencies:
    npm install --legacy-peer-deps
  3. Run the development server:
    npm run dev
  4. Visit http://localhost:3000 in your browser to see the app in action.

Key Frontend Libraries and Tools:

  1. Shadcn UI
  2. React Hook Form
  3. Zod
  4. Stripe

Backend

  1. Install the backend dependencies:

      npm install --legacy-peer-deps 
  2. Configure AWS credentials using the AWS CLI:

    aws configure
  3. Set up local DynamoDB (for local development):

  4. For local testing, use Postman to interact with the APIs:


Authentication with Clerk

  1. Sign up for a Clerk account:
    • Clerk Website
    • Integrate Clerk in the frontend and backend as per the provided tutorial.
  2. Use Clerk's pre-built UI components and hooks to handle authentication flows.

AWS Setup

  1. AWS IAM: Set up IAM roles for security.

  2. AWS ECR: Use Elastic Container Registry for storing Docker images.

  3. AWS Lambda: Host backend APIs and services in a serverless manner.

  4. API Gateway: Expose Lambda functions via RESTful APIs.

  5. AWS S3 & CloudFront: Store and deliver content globally via S3 and CloudFront.


Docker Setup

  1. Install Docker:

  2. Docker Commands:

    • Build the Docker images:

      	docker build -t learning-mgmt . 
    • Run the Docker containers:

      docker run -p 3000:3000 learning-mgmt

Deployment

Frontend Deployment on Vercel

  1. Push your frontend code to GitHub.
  2. Connect your GitHub repository to Vercel and deploy.

Backend Deployment on AWS Lambda

  1. Deploy backend functions to Lambda using AWS CLI or the Serverless Framework.

Links to Tools and Resources


Author

This project was made with ❤️ and ☕ by:

Enock

Releases

No releases published

Packages

No packages published

Languages