{"id":26697403,"url":"https://github.com/mirodilkamilov/testing-system","last_synced_at":"2025-04-13T04:26:11.560Z","repository":{"id":274193402,"uuid":"910766238","full_name":"mirodilkamilov/testing-system","owner":"mirodilkamilov","description":"Testing System is a REST API application for managing and conducting online exams.","archived":false,"fork":false,"pushed_at":"2025-03-26T12:30:13.000Z","size":1091,"stargazers_count":7,"open_issues_count":5,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-26T13:33:38.466Z","etag":null,"topics":["collaborate","java","learn","redis","spring-boot","spring-mvc","spring-security","testing-system"],"latest_commit_sha":null,"homepage":"https://postman.com/mirodil-dev/workspace/testing-system","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mirodilkamilov.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-01-01T11:03:39.000Z","updated_at":"2025-03-26T12:40:59.000Z","dependencies_parsed_at":"2025-03-06T17:22:37.434Z","dependency_job_id":"77f93916-06f7-4aff-b966-aa96bc5bdebd","html_url":"https://github.com/mirodilkamilov/testing-system","commit_stats":null,"previous_names":["mirodilkamilov/testing-system"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mirodilkamilov%2Ftesting-system","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mirodilkamilov%2Ftesting-system/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mirodilkamilov%2Ftesting-system/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mirodilkamilov%2Ftesting-system/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mirodilkamilov","download_url":"https://codeload.github.com/mirodilkamilov/testing-system/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248662625,"owners_count":21141606,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["collaborate","java","learn","redis","spring-boot","spring-mvc","spring-security","testing-system"],"created_at":"2025-03-26T21:19:07.616Z","updated_at":"2025-04-13T04:26:11.534Z","avatar_url":"https://github.com/mirodilkamilov.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Testing System\n\n**_Note:_** 🚧 _This project is under development. Service interruptions may occur in the production environment._ 🚧\n\n## Overview\n\nThe Testing System REST API is a backend application that manages test creation, participation, and result evaluation.\nThis project showcases backend development expertise using modern technologies and the **Spring Boot framework**.\n\n## Key Features\n\n- **User Management**: Admins control accounts and test assignments while test takers participate with automatic\n  progress saving.\n- **Test Management**: Admins create and assign tests with multiple question types (MCQ, Checkbox, True/False, Text).\n- **Results Management**: Automatic evaluation with pass/fail status and summaries.\n- **Secure and Scalable**: Role-based access control with little effort to scale, encrypted password storage, and\n  modular design.\n\nFor a detailed breakdown of the software requirements, refer to [this document](Software%20Requirements%20Document.pdf).\n\n## Tech Stack\n\n- **Backend Framework**: Spring Boot 3\n- **Database**: PostgreSQL\n- **Persistence**: Spring Data JDBC and Spring JDBC Template\n- **Caching**: Redis (for token blocklisting \u0026 autosave test progress)\n- **Security**: Spring Security (Authentication \u0026 Authorization)\n- **Containerization**: Docker\n- **Documentation**: Swagger UI (OpenAPI)\n- **Testing \u0026 Debugging**: Postman\n- **Cloud Deployment**\n\n## Diagrams\n\n### Entity-Relationship Diagram (ERD)\n\nThe following ER diagram shows the core database structure of the Testing System:\n![ER Diagram](ER_Diagram.jpg)\n\n### API Examples\n\n![Example responses](example_responses.png)\n\nFor exploring and testing complete API endpoints, visit\nthe [Swagger UI](https://testing.mirodil.dev/api/swagger-ui.html)\nor [Postman collection](https://www.postman.com/mirodil-dev/workspace/testing-system) with saved\nexamples.\n\n## Installation \u0026 Setup\n\nIf you'd like to simply access the API, you can use the\nalready [deployed application](https://testing.mirodil.dev/api/swagger-ui.html). However, if you prefer to set it\nup locally, follow the steps below.\n\n### Prerequisites\n\nBefore starting, ensure the following tools are installed on your system:\n\n1. [**Docker**](https://docs.docker.com/get-started/get-docker/): Version 20.10 or higher\n\n2. **Docker Compose**: Version 1.29 or higher (included with Docker Desktop)\n\n### Steps\n\nClone the Testing System project from the GitHub repository:\n\n```bash\ngit clone https://github.com/mirodilkamilov/testing-system.git\ncd testing-system\n```\n\nCopy `.env.example` to create your `.env` file and make sure you set `SECRET_KEY` variable. It should be at least 32\ncharacter long:\n\n```bash\ncp .env.example .env\n```\n\nUse Maven to package the application as a JAR file. Skip tests during this step since containerized PostgreSQL and Redis\nwon't be running yet:\n\n```bash\n./mvnw clean package -DskipTests\n```\n\nBuild and start the Docker containers (you can add the -d option to run in detached mode):\n\n```docker\ndocker-compose up --build\n```\n\nOnce the containers are running, the application will be available at http://localhost:8080. You can navigate\nto http://localhost:8080/api/swagger-ui.html to view the API documentation.\n\nTo stop and remove the containers, run:\n\n```docker\ndocker-compose down\n```\n\n### Frontend Integration\n\nTo allow frontend developers to integrate with the backend during local development, CORS has been configured to permit\nrequests from the following origins:\n\n- http://localhost:3000\n- http://127.0.0.1:3000\n\nIf you're working on a frontend application, you can make API calls to the backend without encountering CORS-related\nissues. Ensure your frontend is running on one of the allowed origins above.\n\n## Contribute\n\nI developed this project to showcase my Java skills and web technologies. Developers interested in building a\nuser-friendly interface for this application are welcome to contribute. I also invite anyone who wants to enhance and\nextend the existing functionality, helping this project evolve and improve.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmirodilkamilov%2Ftesting-system","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmirodilkamilov%2Ftesting-system","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmirodilkamilov%2Ftesting-system/lists"}