Skip to content

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).

License

Notifications You must be signed in to change notification settings

kaungmyathtaywin/Tarpaulin

Repository files navigation

MIT License LinkedIn

Tarpaulin

Project Overview

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).

Table of Contents

Features

  • 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

Built With

  • Node.js
  • Express.js
  • MongoDb
  • Redis
  • RabbitMQ
  • JWT
  • Docker
  • AWS ECS

Getting Started

Prerequisites

  • Node.js (>= 20.x)
  • Docker
  • AWS account

Installation

  1. Clone the repository
git clone https://github.com/kaungmyathtaywin/tarpaulin.git
cd tarpaulin
  1. Install dependencies
npm install
  1. 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 

Running the Application

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:

  1. MongoDB
  2. Redis
  3. 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.

API Endpoints

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.

License

This project is licensed under the MIT license. See LICENSE.txt for more information.

About

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).

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published