{"id":19342057,"url":"https://github.com/jrs296/hyperface-project","last_synced_at":"2026-04-30T16:33:26.256Z","repository":{"id":220929741,"uuid":"745332029","full_name":"JRS296/Hyperface-project","owner":"JRS296","description":"Java/Apache Groovy Spring Boot Internship Project","archived":false,"fork":false,"pushed_at":"2024-02-05T11:22:48.000Z","size":273,"stargazers_count":3,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-07-04T07:05:04.069Z","etag":null,"topics":["groovy-language","java","spring"],"latest_commit_sha":null,"homepage":"","language":"Groovy","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/JRS296.png","metadata":{"files":{"readme":"README.MD","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2024-01-19T05:22:37.000Z","updated_at":"2024-08-10T17:49:22.000Z","dependencies_parsed_at":"2024-11-10T03:33:34.211Z","dependency_job_id":"ff4b6066-9df0-4230-8da6-e4cd5b9df0f5","html_url":"https://github.com/JRS296/Hyperface-project","commit_stats":null,"previous_names":["jrs296/hyperface-project"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/JRS296/Hyperface-project","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JRS296%2FHyperface-project","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JRS296%2FHyperface-project/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JRS296%2FHyperface-project/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JRS296%2FHyperface-project/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/JRS296","download_url":"https://codeload.github.com/JRS296/Hyperface-project/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JRS296%2FHyperface-project/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32470879,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-30T13:12:12.517Z","status":"ssl_error","status_checked_at":"2026-04-30T13:12:06.837Z","response_time":57,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["groovy-language","java","spring"],"created_at":"2024-11-10T03:33:31.460Z","updated_at":"2026-04-30T16:33:26.240Z","avatar_url":"https://github.com/JRS296.png","language":"Groovy","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Hyperface-project\n\nJava/Apache Groovy Spring Boot Project - Hyperface Internship, January 2024.\n\n## Progress:\n- Week 1 - CRUD Operations for EMS System - 95% (PR [#1](https://github.com/JRS296/Hyperface-project/pull/1))\n- Week 2 - Testing - 55% Code Coverage (75/101 TC PASSED) (PR [#3](https://github.com/JRS296/Hyperface-project/pull/3))\n- Week 3 - Authentication and Authorization - 100% (PR [#1](https://github.com/JRS296/Hyperface-project/pull/1))\n- Week 4 - Transition to Groovy - 100% (PR [#2](https://github.com/JRS296/Hyperface-project/pull/2))\n- Miscellaneous - (PR [#4](https://github.com/JRS296/Hyperface-project/pull/4))\n\n## Project Setup\n\n### Project Requirements\n- Server - Spring Boot (Use Version: v3.2.1)\n- JDK - Java 17\n- Groovy - v4.0.17\n\nBuild Dependencies\n```\n// Implementation Dependencies\nimplementation 'org.apache.groovy:groovy:4.0.17'\nimplementation 'org.springframework.boot:spring-boot-starter-data-jpa'\nimplementation 'org.springframework.boot:spring-boot-starter-validation'\nimplementation 'org.springframework.boot:spring-boot-starter-web'\nimplementation 'org.jeasy:easy-random:5.0.0'\nimplementation 'org.springframework.boot:spring-boot-starter-security:3.2.2'\nimplementation 'org.springframework.boot:spring-boot-starter-actuator:3.2.0'\nimplementation 'io.jsonwebtoken:jjwt:0.9.1'\nimplementation 'javax.xml.bind:jaxb-api:2.2.4'\nimplementation 'org.springframework.boot:spring-boot-starter-cache:3.2.0'\nimplementation 'io.jsonwebtoken:jjwt-api:0.11.2'\n\n// Runtime Dependencies\nruntimeOnly 'com.mysql:mysql-connector-j'\nruntimeOnly 'io.jsonwebtoken:jjwt-impl:0.11.2'\nruntimeOnly 'io.jsonwebtoken:jjwt-jackson:0.11.2'\n\n// Testing Dependencies\ntestImplementation 'org.springframework.boot:spring-boot-starter-test'\ntestImplementation 'org.springframework.boot:spring-boot-starter-webflux'\ntestImplementation  'com.h2database:h2:1.3.148'\n\n//Optional Dependencies\ndevelopmentOnly 'org.springframework.boot:spring-boot-devtools'\n```\n\nUse following Gradle File for Gradle Build\n```gradle\nplugins {\n\tid 'groovy'\n\tid 'org.springframework.boot' version '3.2.1'\n\tid 'io.spring.dependency-management' version '1.1.4'\n}\n\ngroup = 'com.jrs296'\nversion = '0.0.1-SNAPSHOT'\n\nsourceSets {\n\tmain {\n\t\tjava { srcDirs = [] }    // no source dirs for the java compiler\n\t\tgroovy { srcDirs = [\"src/main/java\", \"src/main/groovy\"] }  // compile   everything in src/ with groovy\n\t}\n\ttest{\n\t\tgroovy { srcDirs = [\"src/test/groovy\"] }\n\t}\n}\nconfigurations {\n\tcompileOnly {\n\t\textendsFrom annotationProcessor\n\t}\n}\nrepositories {\n\tmavenCentral()\n}\ndependencies {\n\timplementation 'org.apache.groovy:groovy:4.0.17'\n\timplementation 'org.springframework.boot:spring-boot-starter-data-jpa'\n\timplementation 'org.springframework.boot:spring-boot-starter-validation'\n\timplementation 'org.springframework.boot:spring-boot-starter-web'\n\timplementation 'org.jeasy:easy-random:5.0.0'\n\timplementation 'org.springframework.boot:spring-boot-starter-security:3.2.2'\n\timplementation 'org.springframework.boot:spring-boot-starter-actuator:3.2.0'\n\timplementation 'io.jsonwebtoken:jjwt:0.9.1'\n\timplementation 'javax.xml.bind:jaxb-api:2.2.4'\n\timplementation 'org.springframework.boot:spring-boot-starter-cache:3.2.0'\n\timplementation 'io.jsonwebtoken:jjwt-api:0.11.2'\n\tdevelopmentOnly 'org.springframework.boot:spring-boot-devtools'\n\truntimeOnly 'com.mysql:mysql-connector-j'\n\truntimeOnly 'io.jsonwebtoken:jjwt-impl:0.11.2'\n\truntimeOnly 'io.jsonwebtoken:jjwt-jackson:0.11.2'\n\ttestImplementation 'org.springframework.boot:spring-boot-starter-test'\n\ttestImplementation 'org.springframework.boot:spring-boot-starter-webflux'\n\ttestImplementation  'com.h2database:h2:1.3.148'\n}\ntasks.named('test') {\n\tuseJUnitPlatform()\n}\n```\n\nBuild Application\n```bash\ncd ems\n./gradlew build\n```\n\nRun Server\n```bash\n./gradlew bootRun\n```\n\n## Briefing on Controller Flow:\n\nhttp://localhost:8080   -   root\n\n- [x] /test - TestController\n\n### /api/auth - AuthController\n- [x] (GET) /test                     - test Controller, verifies pre-authorize for all roles.\n- [x] (GET) /user/userProfile         - test Controller, verifies pre-authorize for all roles.\n- [x] (GET) /admin/adminProfile       - test Controller, verifies pre-authorize for all roles.\n- [x] (GET) /manager/managerProfile   - test Controller, verifies pre-authorize for all roles.\n- [x] (POST) /register                - all employees are to register, role defaults to USER, Admin is pre-created, ProjectID and DepartmentID == null\n- [x] (POST) /login                   - username and password\n\n### /api/assign - AdminController\n- [x] (GET) /authority   - Test Endpoint, returns authorities of currently logged-in user\n- [ ] (PUT) /manager     - Assigns Role change to either department or project - ONLY if Department (or) Project exists\n- [ ] (PUT) /employee    -  Assigns Project and Department to an employee\n\n**TODO - TestCases for manager and employee, specific to migration between departments (***)**\n\n### /api/service/department - DepartmentController ✅\n- [x] (GET) /         - ALL - Get all departments\n- [x] (GET) /{id}     - ALL - Get department by id\n- [x] (POST) /        - ADMIN - Create a department\n- [x] (PUT) /         - ADMIN - Update department (only name of department)\n- [x] (DELETE) /{id}  - ADMIN - Delete department by id\n\n### /api/service/project - ProjectController\n- [x] (GET) /         - ALL - Get all projects\n- [x] (GET) /{id}     - ALL - Get project by id\n- [ ] (POST) /        - ADMIN, DEPT_MANAGER - Create a project*\n- [ ] (PUT) /         - ADMIN, DEPT_MANAGER - Update project (only name of project and *assigned department)\n- [ ] (DELETE) /{id}  - ADMIN, DEPT_MANAGER - Delete project by id*\n\n**TODO - Scoped Handling (DEPT_MANAGER) \\\nTODO - TestCases for PUT and DELETE**\n\n### /api/service/employee - EmployeeController\n- [x] (GET) /         - ALL - Get all employees\n- [x] (GET) /{id}     - ALL - Get employee by id\n- [ ] (PUT) /         - USER - Update employee (name, username, password and email)**\n- [ ] (DELETE) /{id}  - ADMIN, DEPT_MANAGER, PROJECT_MANAGER - Delete employee by id*\n\n**TODO - User Specific data change (PUT) \\\nTODO - Scoped Handling (DEPT_MANAGER and PROJECT_MANAGER)**\n\n## Testing Coverage\n### Controller Tests\n- [x] - AdminControllerTests\n- [x] - AuthControllerTests\n- [x] - DepartmentControllerTests\n- [ ] - EmployeeControllerTests\n- [ ] - ProjectControllerTests\n\n### Service Tests\n- [ ] - AdminServiceTests\n- [x] - JWTServiceTests\n- [x] - DepartmentServiceTests\n- [x] - EmployeeServiceTests\n- [x] - ProjectServiceTests\n\n### End-To-End Tests\n- [x] - AuthSystemTests\n- [ ] - TODO - AdminSystemTests\n- [ ] - DepartmentSystemTests\n- [ ] - EmployeeSystemTests\n- [ ] - ProjectSystemTests\n\n### Miscellaneous Tests\n- [x] - Exception Tests\n- [x] - Miscellaneous Tests\n\nTODO - Scoped Handling (DEPT_MANAGER and PROJECT_MANAGER)**\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjrs296%2Fhyperface-project","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjrs296%2Fhyperface-project","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjrs296%2Fhyperface-project/lists"}