Testcore is a digital solution designed to replicate and enhance the traditional offline exam conduction process, transforming it into an efficient and scalable online system. It eliminates resource wastage, reduces logistical complexities, and saves time by enabling seamless online exam management.
With Testcore, exams can be monitored remotely by a few individuals from anywhere in the world, and students can participate without geographical restrictions. This makes Testcore a cost-effective and resource-efficient platform for educational institutions.
- Structured chat rooms based on institution and class name.
- Enables group discussions to resolve exam-related queries quickly.
- Chat rooms are automatically locked during exams to maintain integrity.
- Supports one-to-many (1:M) and many-to-many (M:M) video conferencing.
- Centralized monitoring dashboard for live exam supervision.
- Allows invigilators to ensure compliance with examination guidelines remotely.
- Automated SMS notifications for exam schedules, subjects, and course registrations.
- Ensures timely updates and minimizes communication gaps.
- File upload scanner to detect and prevent malware.
- Ensures a secure environment for file exchanges.
- Comprehensive logging of all system activities for debugging and performance tracking.
- Compatible with tools like Grafana and Prometheus for advanced monitoring, alerting, and proactive issue resolution.
Testcore uses a hybrid database architecture for optimal performance and scalability:
- SQL Database (PostgreSQL): Handles structured and relational data like user details, exam results, and transactions.
- NoSQL Database (MongoDB): Manages unstructured and semi-structured data like dynamic timetables and exam configurations.
This combination ensures reliability, scalability, and adaptability to diverse data requirements.
- Client: Contains the frontend code for the platform, providing a responsive and intuitive user interface.
- Server: Houses the backend logic, database operations, and API endpoints.
Both client and server components are independent, enabling separate deployment for scalability and flexibility.
The backend follows a microservices architecture:
- Modularity: Each service can operate independently.
- Scalability: Services can be scaled based on demand.
- Fault Tolerance: Failures in one service do not impact others.
- Efficient Load Distribution: Services can be deployed on separate servers for optimal performance.
Testcore is fully containerized using Docker:
- Services are built into containers for easy portability.
- Multiple services can run on the same server using Docker containers.
- Nginx is used for reverse proxying, load balancing, WebSocket handling, and caching.
- Docker ensures consistent backend deployment across environments.
- Docker
- Docker Compose (optional)
- Node.js (for development)
- PostgreSQL and MongoDB instances
-
Clone the repository:
git clone https://github.com/your-repo/testcore.git cd testcore -
Build and run Docker containers:
docker-compose up --build
-
Access the services:
- Frontend:
http://localhost:<frontend_port> - Backend:
http://localhost:<backend_port>
- Frontend:
-
For production:
- Configure environment variables for
Dockerfileanddocker-compose.yml. - Use Nginx for reverse proxy and SSL setup.
- Configure environment variables for
- Frontend: React.js (or your frontend tech)
- Backend: Node.js, Express.js
- Databases: PostgreSQL, MongoDB
- Containerization: Docker
- Monitoring: Grafana, Prometheus
- Web Server: Nginx
We welcome contributions to Testcore. Follow these steps to contribute:
- Fork the repository.
- Create a new branch for your feature or bug fix:
git checkout -b feature-name
- Commit your changes and push to your forked repo.
- Create a pull request describing your changes.
Testcore is licensed under the MIT License.