Skip to content

AnkitBorude/Abacus-Exam-System-REST-API

Repository files navigation

πŸš€ Abacus Exam REST API

Node.js Express.js MongoDB Docker

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

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



πŸ› οΈ Tech Stack

Core Technologies

  • Runtime: Node.js
  • Framework: Express.js
  • Database: MongoDB
  • Container: Docker & Docker Compose

Key Dependencies

{
  "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.

Docker Compose Installation

For Production and Local development deployment using docker compose, refer to Docker Compose Installation Guide.

πŸ“œ API Documentation

Find the comprehensive API documentation here.

πŸ“Š Testing and Coverage

The API is end-to-end tested on Postman with approximately 80% code coverage. Explore the Postman workspace here.

πŸ“ Scripts

{
  "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.

Contributors