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.