Git Product home page Git Product logo

educt's Introduction

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
[email protected]
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

educt's People

Contributors

sergeyyarkov avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.