Skip to content

Learning management system for publishing your courses, lectures, lessons.

License

Notifications You must be signed in to change notification settings

sergeyyarkov/educt

Repository files navigation

License: MIT Netlify Status

All necessary services are started from this repository.

Table of Contents

Description

Educt learning management system (LMS) is an application where you can create and edit your courses by uploading each video lesson. You can also register your students and give them access to specific courses. With the help of the role system, you can assign your teachers so that they can also edit or create new courses. There are only three roles in the system, these are STUDENT, TEACHER and ADMINISTRATOR. Your students can also correspond with you via online chat. To install the application on your server, take a look at the installation chapter.

Technologies Stack

  • Backend (AdonisJS)
  • Frontend (ReactJS)
  • ChakraUI (React component library)
  • Database (PostgreSQL & Redis)
  • Web server (nginx)
  • Socket.IO for chat
  • Deployment tool (Docker)

Features

  • Π‘ourse and lesson management
  • Role-based access control
  • Sorting courses by category
  • Cloud (Amazon AWS) or local storage for lesson materials
  • User Authentication
  • Chat between users
  • User management
  • Editing your profile personal data (password, e-mail, contacts)
  • Changing e-mail with verification code
  • Deployment with Docker
  • Adaptive design
  • Night/Light theme

Demo

The API server is deployed on heroku and is available at this link.

You can interact with the server through the client, which is deployed on the Netlify service at this link.

Π‘ross-domain cookies may not work correctly with Heroku + Netlify and therefore authentication issues may occur. Also, the mail sending service is not configured and is not available.

Use the following information below to login.

Role Login Password
ADMINISTRATOR admin 123456
TEACHER teacher 123456
STUDENT student 123456

Screenshots

You can see the screenshots of the application in this folder.

Installation

  1. Download the project from the git repository
git clone --recursive https://github.com/sergeyyarkov/educt.git
  1. Configure your environment variables in docker-compose.yml file in client and api services. See the environment variables chapter.
  2. Write your domain name to default.conf file in nginx folder instead of localhost.
  3. Build application:
make build
  1. Start the application and run migrations
make up
make migrate
  1. Seed database with some data
make seed

Now the application is completely ready to work. Go to the http://localhost to check if it works. Log in as an administrator.

login: admin
password: 123456

Then you can change your password in your personal profile.

Environment variables

Here are the environment variables you may need to set.

  • πŸ”΄ - required
  • 🟑 - optional

πŸ”΄ API_URL

Link to the API server for authentication, obtaining the necessary data and interacting with the system.

Example:

API_URL=http://api.educt.edu

πŸ”΄ WS_URL

Link to the WebSocket server. Used for chat functionality

Example:

WS_URL=ws://api.educt.edu

πŸ”΄ APP_KEY

App key is a randomly generated 16 or 32 characters long string required to encrypted cookies, sessions and other sensitive data.

Example:

APP_KEY=IP387l45rlNO3t7Qgjd89qr-a2G4oUgz

πŸ”΄ PG_HOST

πŸ”΄ PG_USER

πŸ”΄ PG_PASSWORD

πŸ”΄ PG_DB_NAME

This envs required to connect to the database.

Example:

PG_HOST=postgres
PG_PORT=5432
PG_USER=postgres
PG_PASSWORD=1234
PG_DB_NAME=educt

πŸ”΄ REDIS_HOST

πŸ”΄ REDIS_PORT

πŸ”΄ REDIS_PASSWORD

The Redis server connection is used to store sessions, conversations, chat history, and more.

Example:

REDIS_HOST=redis
REDIS_PORT=6379
REDIS_PASSWORD=

πŸ”΄ MAILER

You can choose which mail transfer service to use. Available values: mailgun or smtp.

Example:

MAILER=smtp

🟑 SMTP_HOST

🟑 SMTP_PORT

🟑 SMTP_USERNAME

🟑 SMTP_PASSWORD

SMTP credentials and configuration the server should use to send emails. If you do not want to use SMTP, then do not change the fields and leave them as default

Example:

SMTP_HOST=smtp.gmail.com
SMTP_PORT=587
SMTP_USERNAME=example@gmail.com
SMTP_PASSWORD=1234

🟑 MAILGUN_API_KEY

🟑 MAILGUN_DOMAIN

Mailgun is a service that will allow you to send messages. If you do not want to use Mailgun, then do not change the fields and leave them as default

Example:

MAILGUN_API_KEY=115hd9db10cd10ed682edc01b887efd8-156db0f1-4yd8hd99
MAILGUN_DOMAIN=sandbox2717ddf9j8ab6666a508dbb2c0045acb.mailgun.org

πŸ”΄ DRIVE_DISK

Choose where you want to store content for your courses. (video, attached materials, pictures). Available values: local or s3 (Amazon AWS).

Example:

DRIVE_DISK=local

🟑 S3_KEY

🟑 S3_SECRET

🟑 S3_BUCKET

🟑 S3_REGION

Enter data to connect to Amazon AWS cloud storage. If you do not want to use Amazon AWS, then do not change the fields and leave them as default

Example:

S3_KEY=CJIB4ASE6I9IKSGV7KHI
S3_SECRET=2vHfGE+TBMqVKxkjBohBqGwWcE01SclXf5YJIXbs
S3_BUCKET=example
S3_REGION=eu-central-1

Requirements

  • NodeJS v14+
  • Docker
  • Git

License

Educt is under the MIT License