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.
- β¨ Features
- π οΈ Tech Stack
- π§ Installation
- π API Documentation
- π Testing
- π Scripts
- π€ Contributing
- βοΈ License
| 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 |
- Runtime: Node.js
- Framework: Express.js
- Database: MongoDB
- Container: Docker & Docker Compose
{
"dependencies": {
"randomjs": "*",
"jsPDF": "*",
"mongoose": "*",
"winston": "*",
"morgan": "*",
"joi": "*",
"helmet": "*",
"dotenv": "*",
"bcryptjs": "*"
}
}For Bare Metal installation and setup instructions, please refer to the Bare-Metal Installation Guide.
For Production and Local development deployment using docker compose, refer to Docker Compose Installation Guide.
Find the comprehensive API documentation here.
The API is end-to-end tested on Postman with approximately 80% code coverage. Explore the Postman workspace here.
{
"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-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
- 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
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.
This project is licensed under the Apache 2.0 License.