About • Features • Technologies • Environment variables • How to run • API endpoints • License
EdTech is a web application that aims to connect students and teachers in a simple and intuitive way. It was inspired by the LWS platform.
- Students can register on the platform by sending:
- Name
- Password
- Avatar (optional)
- Students can log in to the platform by sending:
- Password
- Students can update their:
- Avatar
- Students can recover their password by sending:
- Student can change their password by sending:
- New password
- Password confirmation
- Admin can log in to the platform by sending:
- Password
- Admin can course videos by sending:
- Title
- Description
- Video URL
- Thumbnail URL
- Admin can add quizzes to courses by sending:
- Title
- Questions with:
- Title
- Options
- Title
- Is correct
- Admin can add assignments by sending:
- Title
- Description
- Due date
- Total marks
- Admin can add update submitted assignments by sending:
- Marks
- Feedback
The following tools were used in the construction of the project:
- NodeJs
- Express
- Cloudinary
- JWT
- Passport
- NodeMailer
- Handlebars
- MongoDB
- Mongoose
- Bcrypt
- Joi
- Helmet
- http-status
- Create a
.env.local
file in the root of the client folder - Add the following environment variables
#API
NEXT_PUBLIC_API_URL=<API Url>
NEXT_PUBLIC_PAGE_SIZE=10
- Create a
.env
file in the root of the server folder - Add the following environment variables
# Port number
NODE_ENV=development
PORT='<Port number>'
# URL of the app
APP_URL=<Client URL>
# URL of the Mongo DB
MONGODB_URL='<MongoDB URL>'
# JWT
# JWT secret key
JWT_SECRET='<Secret key>'
# Number of minutes after which an access token expires
JWT_ACCESS_EXPIRATION_MINUTES='<Number of minutes>'
# Number of days after which a refresh token expires
JWT_REFRESH_EXPIRATION_DAYS='<Number of days>'
# Number of minutes after which a reset password token expires
JWT_RESET_PASSWORD_EXPIRATION_MINUTES='<Number of minutes>'
# Number of minutes after which a verify email token expires
JWT_VERIFY_EMAIL_EXPIRATION_MINUTES='<Number of minutes>'
# SMTP configuration options for the email service
# For testing, you can use a fake SMTP service like Ethereal: https://ethereal.email/create
SMTP_HOST='<SMTP host>'
SMTP_PORT='<SMTP port>'
SMTP_USERNAME='<SMTP username>'
SMTP_PASSWORD='<SMTP password>'
EMAIL_FROM='<Email from>'
# Cloudinary account credentials
CLOUDINARY_CLOUD_NAME='<Cloudinary cloud name>'
CLOUDINARY_API_KEY='<Cloudinary API key>'
CLOUDINARY_API_SECRET='<Cloudinary API secret>'
- Clone this repository
git clone https://github.com/b-l-i-n-d/edTech.git
-
Install dependencies
Server
cd server yarn
Client
cd client yarn
-
Run the application
Server
yarn dev
Client
yarn dev
-
You can optionally build the application
Server
yarn start
Client
yarn build
Route | Method | Description |
---|---|---|
/v1/auth/register |
POST | Register a new user |
/v1/auth/login |
POST | Login a user |
/v1/auth/logout |
POST | Logout a user |
/v1/auth/refresh-tokens |
POST | Refresh access token |
/v1/auth/forgot-password |
POST | Send password reset email |
/v1/auth/reset-password |
POST | Reset password |
/v1/auth/reset-password |
POST | Reset password |
/v1/auth/send-verification-email |
POST | Send email verification email |
/v1/auth/verify-email |
POST | Verify email |
Route | Method | Description |
---|---|---|
/v1/users |
GET | Get all users |
/v1/users |
POST | Create new user |
/v1/users/:userId |
GET | Get a user |
/v1/users/:userId |
PATCH | Update a user |
/v1/users/:userId |
DELETE | Delete a user |
Route | Method | Description |
---|---|---|
/v1/videos |
GET | Get all videos |
/v1/videos |
POST | Create new video |
/v1/videos/:videoId |
GET | Get a video |
/v1/videos/:videoId |
PATCH | Update a video |
/v1/videos/:videoId |
DELETE | Delete a video |
Route | Method | Description |
---|---|---|
/v1/quizzes |
GET | Get all quizzes |
/v1/quizzes |
POST | Create new quiz |
/v1/quizzes/:quizId |
GET | Get a quiz |
/v1/quizzes/:quizId |
PATCH | Update a quiz |
/v1/quizzes/:quizId |
DELETE | Delete a quiz |
Route | Method | Description |
---|---|---|
/v1/assignments |
GET | Get all assignments |
/v1/assignments |
POST | Create new assignment |
/v1/assignments/:assignmentId |
GET | Get a assignment |
/v1/assignments/:assignmentId |
PATCH | Update a assignment |
/v1/assignments/:assignmentId |
DELETE | Delete a assignment |
Route | Method | Description |
---|---|---|
/v1/quizzes-sets |
GET | Get all quizzes sets |
Route | Method | Description |
---|---|---|
/v1/quizzes-marks |
GET | Get all quizzes marks |
/v1/quizzes-marks |
POST | Create new quiz mark |
Route | Method | Description |
---|---|---|
/v1/assignments-marks |
GET | Get all assignments marks |
/v1/assignments-marks |
POST | Create new assignment mark |
/v1/assignments-marks/:assignmentMarkId |
GET | Get a assignment mark |
/v1/assignments-marks/:assignmentMarkId |
PATCH | Update a assignment mark |
/v1/assignments-marks/:assignmentMarkId |
DELETE | Delete a assignment mark |
Route | Method | Description |
---|---|---|
/v1/dashboard |
GET | Get all required data for a users |
Route | Method | Description |
---|---|---|
/v1/leaderboard |
GET | Get all users with their rank |
Route | Method | Description |
---|---|---|
/docs |
GET | Get all docs |