The Examination Platform is a robust system for efficient exam management within educational institutions. It features distinct user roles - administrators, instructors, and students. The platform ensures secure authentication, comprehensive user data management, and effective exam handling. With an intuitive interface, it prioritizes user-friendly design and scalability to accommodate growth. Results access control is implemented, and considerations include audit trails, notifications, and data integrity. The platform aims to streamline examination processes, providing a reliable and user-centric solution.
- Python: Primary programming language chosen for its simplicity, readability, and vast ecosystem of libraries and frameworks.
- Django: A high-level Python web framework renowned for its scalability, security features, and rapid development capabilities.
- Django Rest Framework (DRF): Built on top of Django, DRF provides powerful tools for building RESTful APIs, simplifying the creation of web services.
- PostgreSQL: A robust open-source relational database management system known for its reliability, extensibility, and support for complex queries and transactions.
- JWT (JSON Web Tokens): A standard for securely transmitting information between parties as JSON objects, commonly used for authentication and authorization in web applications.
- Docker: Containerization platform that simplifies the deployment and management of applications by packaging them into portable containers, ensuring consistency across different environments.
- Docker Compose: Tool for defining and running multi-container Docker applications, enabling seamless configuration and orchestration of complex application architectures.
-
Install Docker here
-
Install Git here
-
Create a working directory:
mkdir ~/MAAT && cd ~/MAAT
-
Clone the repository
git clone https://github.com/ak4m410x01/Examination_Platform_API.git .
-
Switch to DeployOnDocker Branch
git switch DeployOnDocker
-
Start the application
docker-compose up -d
-
Access API: http://127.0.0.1/api/
-
Access DB: 127.0.0.1:5432
-
Don't forget .env file with variables
Variable | Value |
---|---|
SECRET_KEY | 'django-insecure-%2dmqnqj9v2e&8yk*t=#b+2-=i!45+153*@-g0*=&%1od16z^m' |
DEBUG | False |
ALLOWED_HOSTS | 172.0.0.1,* |
DATABASE_ENGINE | django.db.backends.postgresql |
DATABASE_HOST | postgres |
DATABASE_PORT | 5432 |
DATABASE_NAME | maat |
DATABASE_USER | maat |
DATABASE_PASSWORD | maat |
JWT_SECRET_KEY | JWT_S3CR3T_K3Y |
POSTGRES_DB | maat |
POSTGRES_USER | maat |
POSTGRES_PASSWORD | maat |
note: these variables are for the lab environment only... don't use these in xxx production environments xxx
+-------------------------------+---------+---------------------------+
| Name | Version | Use |
| ----------------------------- | ------- | ------------------------- |
| Python | 3.11.7 | Programming Lang |
| Django | 5.0.2 | Django Framework |
| djangorestframework | 3.14.0 | Restful Framework |
| djangorestframework-simplejwt | 5.3.1 | Restful Framework Jwt |
| django-filter | 23.5 | Restful Framework filters |
| django-cors-headers | 4.3.1 | Restful Framework CORS |
| psycopg2-binary | 2.9.9 | PostgreSQL DB lib |
| pthon-decouple | 3.8 | To use .env file |
+-------------------------------+---------+---------------------------+