All necessary services are started from this repository.
- Table of Contents
- Description
- Technologies Stack
- Features
- Demo
- Screenshots
- Installation
- Environment variables
- Requirements
- License
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.
- Backend (AdonisJS)
- Frontend (ReactJS)
- ChakraUI (React component library)
- Database (PostgreSQL & Redis)
- Web server (nginx)
- Socket.IO for chat
- Deployment tool (Docker)
- Π‘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
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 |
You can see the screenshots of the application in this folder.
- Download the project from the git repository
git clone --recursive https://github.com/sergeyyarkov/educt.git
- Configure your environment variables in
docker-compose.yml
file inclient
andapi
services. See the environment variables chapter. - Write your domain name to
default.conf
file innginx
folder instead of localhost. - Build application:
make build
- Start the application and run migrations
make up
make migrate
- 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.
Here are the environment variables you may need to set.
- π΄ - required
- π‘ - optional
Link to the API server for authentication, obtaining the necessary data and interacting with the system.
Example:
API_URL=http://api.educt.edu
Link to the WebSocket server. Used for chat functionality
Example:
WS_URL=ws://api.educt.edu
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
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
The Redis server connection is used to store sessions, conversations, chat history, and more.
Example:
REDIS_HOST=redis
REDIS_PORT=6379
REDIS_PASSWORD=
You can choose which mail transfer service to use. Available values: mailgun
or smtp
.
Example:
MAILER=smtp
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 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
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
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
- NodeJS v14+
- Docker
- Git
Educt is under the MIT License