Skip to content

KishorKumarParoi/learning-management

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

37 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Learning Management Web App

A Learning Management System (LMS) designed to provide an interactive and efficient learning experience. This application is built using modern web technologies such as React, Next.js, Redux Toolkit, and Framer Motion for the frontend, with a robust backend powered by Node.js, Express, and PostgreSQL. It leverages AWS services like EC2, RDS, S3, and Cognito for scalability, security, and performance, along with a CDN for fast content delivery.


Features

  • User Authentication: Secure user authentication and authorization using AWS Cognito.
  • Interactive UI: Built with React and Framer Motion for smooth animations and responsive design.
  • State Management: Centralized state management using Redux Toolkit.
  • Server-Side Rendering (SSR): Optimized performance and SEO with Next.js.
  • File Uploads: Store and retrieve files (e.g., course materials) using AWS S3.
  • Database Management: Scalable and reliable database using PostgreSQL hosted on AWS RDS.
  • Hosting: Deployed on AWS EC2 for high availability and scalability.
  • Content Delivery: Fast content delivery using a CDN.
  • Course Management: Create, update, and manage courses and lessons.
  • Progress Tracking: Track user progress and completion of courses.

Tech Stack

Frontend

  • React: For building the user interface.
  • Next.js: For server-side rendering and routing.
  • Redux Toolkit: For state management.
  • Framer Motion: For animations and transitions.

Backend

  • Node.js: For building the server-side logic.
  • Express: For handling API requests and routing.
  • PostgreSQL: For managing relational data.

AWS Services

  • AWS EC2: For hosting the application.
  • AWS RDS: For managing the PostgreSQL database.
  • AWS S3: For storing and retrieving files.
  • AWS Cognito: For user authentication and authorization.

Additional Services

  • CDN: For fast and efficient content delivery.

Installation and Setup

Prerequisites

  • Node.js (v16 or later)
  • npm or yarn
  • AWS account with access to EC2, RDS, S3, and Cognito.

Steps

  1. Clone the Repository:
    git clone https://github.com/your-repo/learning-management.git
    cd learning-management
  2. Install Dependencies:
    npm install
  3. Set Up Environment Variables: Create a .env file in the root directory and add the following:
    NEXT_PUBLIC_API_BASE_URL=http://your-api-url
    AWS_REGION=your-aws-region
    AWS_S3_BUCKET=your-s3-bucket-name
    AWS_COGNITO_USER_POOL_ID=your-cognito-user-pool-id
    AWS_COGNITO_CLIENT_ID=your-cognito-client-id
    DATABASE_URL=your-postgresql-database-url
    CDN_URL=your-cdn-url
  4. Run the Development Server:
npm run dev
  1. Build and Start for Production:
npm run build
npm start
  1. Deployment Backend Deploy the<vscode_annotation details='%5B%7B%22title%22%3A%22hardcoded-credentials%22%2C%22description%22%3A%22Embedding%20credentials%20in%20source%20code%20risks%20unauthorized%20access%22%7D%5D'> backend</vscode_annotation> server to AWS EC2. Use AWS RDS for the PostgreSQL database. Configure AWS S3 for file storage.

    Frontend Deploy the frontend using Vercel, AWS EC2, or another hosting provider. Ensure the environment variables are correctly set for production. CDN Configure a CDN (e.g., AWS CloudFront) to serve static assets and improve content delivery speed.

    CDN Configure a CDN (e.g., AWS CloudFront) to serve static assets and improve content delivery speed.

  2. Folder Structure learning-management/ ├── client/ # Frontend code │ ├── src/ │ │ ├── app/ # Next.js pages and components │ │ ├── components/ # Reusable React components │ │ ├── state/ # Redux Toolkit slices │ │ └── styles/ # Global styles ├── server/ # Backend code │ ├── routes/ # API routes │ ├── models/ # Database models │ └── controllers/ # Business logic └── README.md # Project documentation

  3. Contributing Fork the repository.

    Create a new branch:

    git checkout -b feature-name

    Commit your changes:

    git commit -m "Add feature-name"

    Push to the branch:

    git push origin feature-name

    Open a pull request.

  4. License This project is licensed under the MIT License. See the LICENSE file for details. Acknowledgments React for the powerful UI library. Next.js for server-side rendering and routing. AWS for the cloud infrastructure. Framer Motion for smooth animations. Redux Toolkit for state management. PostgreSQL for reliable database management.

About

learning management app by nextjs, framer motion

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published