An open API service indexing awesome lists of open source software.

https://github.com/ankitborude/abacus-exam-system-rest-api

The Abacus Exam API is a comprehensive platform designed to streamline mathematical assessment and practice for educational institutions.
https://github.com/ankitborude/abacus-exam-system-rest-api

api caching endpoint-engineering exam expressjs generator http-server javascript joi-validation jspdf jwt mongodb mongoose morgan nodejs oauth2 rest-api restful-api winston-logger

Last synced: 3 months ago
JSON representation

The Abacus Exam API is a comprehensive platform designed to streamline mathematical assessment and practice for educational institutions.

Awesome Lists containing this project

README

        


🚀 Abacus Exam REST API



![Node.js](https://img.shields.io/badge/Node.js-339933?style=for-the-badge&logo=node.js&logoColor=white)
![Express.js](https://img.shields.io/badge/Express.js-000000?style=for-the-badge&logo=express&logoColor=white)
![MongoDB](https://img.shields.io/badge/MongoDB-47A248?style=for-the-badge&logo=mongodb&logoColor=white)
![Docker](https://img.shields.io/badge/Docker-2496ED?style=for-the-badge&logo=docker&logoColor=white)

A secure, scalable REST API built with Node.js, Express, and MongoDB for managing and conducting online exams efficiently. This API provides robust features like authentication, question generation, analytics, and more.

## 📑 Table of Contents
- [✨ Features](#-features)
- [🛠️ Tech Stack](#️-tech-stack)
- [🔧 Installation](#-installation)
- [📜 API Documentation](#-api-documentation)
- [📊 Testing](#-testing)
- [📝 Scripts](#-scripts)
- [🤝 Contributing](#-contributing)
- [⚖️ License](#️-license)

## ✨ Features


Core Features
Security Features
Infrastructure Features


📑 Smart Question Generation
🔒 OAuth Security
🐳 Docker Support


📊 Advanced Analytics
⚙️ Role-Based Access Control
🌐 Cloud Optimized


🔄 Cookie-Free Architecture
🔐 Secure Authentication
📦 Containerization

🗎 Read full Project Documentation on following Link



👉 https://ankitborude.github.io/Abacusexam-documentation


## 🛠️ Tech Stack

### Core Technologies
- **Runtime**: Node.js
- **Framework**: Express.js
- **Database**: MongoDB
- **Container**: Docker & Docker Compose

### Key Dependencies
```json
{
"dependencies": {
"randomjs": "*",
"jsPDF": "*",
"mongoose": "*",
"winston": "*",
"morgan": "*",
"joi": "*",
"helmet": "*",
"dotenv": "*",
"bcryptjs": "*"
}
}
```

## 🔧 Installation

### Bare Metal Installation
For Bare Metal installation and setup instructions, please refer to the [Bare-Metal Installation Guide](https://ankitborude.github.io/Abacusexam-documentation/#/installation).

### Docker Compose Installation
For Production and Local development deployment using docker compose, refer to [Docker Compose Installation Guide](https://ankitborude.github.io/Abacusexam-documentation/#/installation-with-docker).

## 📜 API Documentation
Find the comprehensive API documentation [here](https://ankitborude.github.io/Abacusexam-documentation/#/welcome).

## 📊 Testing and Coverage
The API is end-to-end tested on Postman with approximately 80% code coverage. Explore the Postman workspace [here](https://www.postman.com/postman-api-fundamentals-student-expert-6316/abacus-exam-system-rest-api/overview).

## 📝 Scripts
```json
{
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "NODE_ENV=production node ./src/index.js",
"dev": "nodemon ./src/index.js",
"prof": "node --prof ./src/index.js",
"lint": "npx eslint .",
"lint:fix": "npx eslint . --fix",
"format:check": "npx prettier . --check",
"format:fix": "npx prettier . --write"
}
}
```

## Docker Compose Features

Development/Local Features



  • Docker-based development environment with hot-reload capabilities

  • Node.js application with automatic code synchronization through volume mounting

  • MongoDB database with persistent storage

  • Environment variable configuration support

  • Automatic container restart functionality

  • Port mapping for both application and database services

Production Features



  • Secure MongoDB authentication with root user credentials

  • Health monitoring system for both application and database services

  • Log rotation management to prevent disk space issues

  • Multiple environment file support (.env and .prod.env)

  • Automated container health checks with retry mechanisms

  • Production-grade restart policies

## 🤝 Contributing
Contributions are welcome! Feel free to fork the repository, make changes, and submit a pull request. Ensure your code follows the project style guidelines and includes tests.

## ⚖️ License
This project is licensed under the [Apache 2.0 License](https://www.apache.org/licenses/LICENSE-2.0).