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.