Tarpaulin is a Canvas-like course management backend application implemented with a complete RESTful API for creating, deleting, editing courses and submissions users (students and instructors).
- User authentication and authorization (Admin, Instructor, Student roles)
- CRUD operations for courses, assignments, and submissions
- File upload and download for assignment submissions
- Course roster download in CSV format
- Pagination for requesting large data
- Rate limiting to prevent DDOS attacks
- Docker containerization for all services
- Node.js (>= 20.x)
- Docker
- AWS account
- Clone the repository
git clone https://github.com/kaungmyathtaywin/tarpaulin.git
cd tarpaulin
- Install dependencies
npm install
- Set up environment variables. Create a
.env
file in the root directory. Copy and paste the following into the created.env
file.
PORT=8000
MONGO_DB=tarpaulin
MONGO_ROOT_USER=root
MONGO_ROOT_PASSWORD=hunter2
MONGO_USER=tarpaulin
MONGO_PASSWORD=hunter2
docker-compose up -d --build
It is recommended to run the application with docker-compose as it handles the containerization of each service used for the application and bundles them up together.
If you wish to run it without docker-compose, you have to manually containerize each service under the same docker network. Services (Images) to containerize:
- MongoDB
- Redis
- RabbitMQ
After setting up all those containers, you can run the API server with
npm start
The application should be running at your localhost
with port 8000
.
All the endpoints for this application can be accessed through openapi.yaml
file. You can copy and paste the contents from openapi.yaml
into swagger.io.
This project is licensed under the MIT license. See LICENSE.txt for more information.