{"id":20415778,"url":"https://github.com/rbkgh/rizla","last_synced_at":"2026-06-06T00:31:39.758Z","repository":{"id":254677689,"uuid":"847237844","full_name":"RbkGh/rizla","owner":"RbkGh","description":"Organizational Transport Booker","archived":false,"fork":false,"pushed_at":"2024-09-10T12:55:18.000Z","size":1065,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-05T03:41:30.779Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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/RbkGh.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","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-08-25T08:39:13.000Z","updated_at":"2025-01-24T04:41:18.000Z","dependencies_parsed_at":"2024-08-25T09:47:50.081Z","dependency_job_id":"80fcf422-6cd0-45fd-bf13-0d6efcee129a","html_url":"https://github.com/RbkGh/rizla","commit_stats":null,"previous_names":["rbkgh/rizla"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/RbkGh/rizla","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RbkGh%2Frizla","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RbkGh%2Frizla/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RbkGh%2Frizla/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RbkGh%2Frizla/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/RbkGh","download_url":"https://codeload.github.com/RbkGh/rizla/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RbkGh%2Frizla/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33965591,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-05T02:00:06.157Z","response_time":120,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":[],"created_at":"2024-11-15T06:17:32.718Z","updated_at":"2026-06-06T00:31:39.743Z","avatar_url":"https://github.com/RbkGh.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Rizla - Organizational Transport Booker\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](https://opensource.org/licenses/MIT)\n\n## Requirements\n```textmate\n1. Java 17+\n```\n\n## Run\n\u003e 1. Build application\n```shell\n./mvnw clean package -DskipTests\n```\n\n\u003e 2. Start docker container\n```shell\ndocker-compose up --build\n```\n\n\u003e Application is now live at  http://localhost:4444/ and postgres db at port 9999\n\n## Run Tests- run in root directory:\n```shell\n./mvnw clean\n```\n```shell\n./mvnw test\n```\n\u003e\u003e\u003e this runs all integration and unit tests in project directory, 100% class coverage!\n![](https://github.com/RbkGh/rizla/blob/main/photos/img_test_cov.png)\n\u003e\u003e To delete db data :\n```jshelllanguage\ndocker-compose down -v\n```\n## Development Setup \n\u003e docker-compose.dev.yml file allows hot reload using spring boot devtools, \n\u003e the dev setup allows easy development and deployment in a containerized environ\n```shell\ndocker-compose -f docker-compose.dev.yml up --build\n```\n\u003e dev url for app will be live at http://localhost:4444/ and postgres db at port 9999\n\u003e Swagger URL : [![http://localhost:4444/swagger-ui/index.html](https://img.shields.io/badge/swagger_url-000?style=for-the-badge\u0026logo=ko-fi\u0026logoColor=white)](http://localhost:8080/swagger-ui/index.html)\n\n# Create Account\n### Request\n```shell\nPOST http://localhost:4444/api/public/users/register\nAccept: application/json\nContent-Type: application/json\n# userType can be either PASSENGER,EXEC_PASSENGER or DRIVER\n\n{\n  \"username\": \"kofi_passenger@yahoo.com\",\n  \"name\": \"Passenger Kofi\",\n  \"password\": \"1234\",\n  \"userType\": \"PASSENGER\"\n}\n```\n#### Response\n```text\nHTTP/1.1 201 \nLocation: http://localhost:4444/api/public/users/register/7\nX-Content-Type-Options: nosniff\nX-XSS-Protection: 0\nCache-Control: no-cache, no-store, max-age=0, must-revalidate\nPragma: no-cache\nExpires: 0\nX-Frame-Options: DENY\nContent-Type: application/json\nTransfer-Encoding: chunked\nDate: Wed, 28 Aug 2024 20:06:35 GMT\n\n{\n  \"id\": 7,\n  \"username\": \"kofi_passenger@yahoo.com\",\n  \"name\": \"Passenger Kofi\"\n}\nResponse file saved.\n\u003e 2024-08-28T200635.201.json\n\n```\n\n# Login To Get JWT Token\n### Request \n```shell\nPOST http://localhost:4444/api/public/auth/login\nAccept: application/json\nContent-Type: application/json\n# userType can be either PASSENGER,EXEC_PASSENGER or DRIVER\n\n{\n  \"username\": \"kofi_passenger@yahoo.com\",\n  \"password\": \"1234\"\n}\n```\n### Response \n```shell\nHTTP/1.1 200 \nContent-Type: application/json\nTransfer-Encoding: chunked\nDate: Wed, 28 Aug 2024 20:13:24 GMT\n\n{\n  \"jwtToken\": \"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJrb2ZpX3Bhc3NlbmdlckB5YWhvby5jb20iLCJpYXQiOjE3MjQ4NzYwMDQsImV4cCI6MTcyNTIzNjAwNH0.g2qo2eosXt65ZGIqCz0IFO1eQRWgB_EU_szA4ScDo3IMzLwSJIswf5ESz8UkqJqIuEKCHJJfvLfRHMjkydj6Mw\"\n}\nResponse file saved.\n\u003e 2024-08-28T201324.200.json\n```\n# Get Cars Available For Booking \n\u003e Some cars are already created for booking \n### Request \n\n# Book Available Slots For Vehicle \n```text\nAvailable slots are one of the following :\nHOUR_1,ie (7am-7:59am)\nHOUR_2,ie (8am-8:59am)\nHOUR_3,ie (9am-9:59am)\nHOUR_4,ie (10am-10:59am)\nHOUR_5,ie (11am-11:59am)\nHOUR_6,ie (12pm-12:59pm)\nHOUR_7,ie (12pm-12:59pm)\nHOUR_8,ie (12pm-12:59pm)\nany option aside these treats it as default choice of HOUR_1\n```\n\n### Request\n```shell\nGET http://localhost:4444//api/vehicles\nAccept: application/json\nContent-Type: application/json\nAuthorization: Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJrb2ZpX3Bhc3NlbmdlckB5YWhvby5jb20iLCJpYXQiOjE3MjQ4NzYwMDQsImV4cCI6MTcyNTIzNjAwNH0.g2qo2eosXt65ZGIqCz0IFO1eQRWgB_EU_szA4ScDo3IMzLwSJIswf5ESz8UkqJqIuEKCHJJfvLfRHMjkydj6Mw\n\n```\n\n### Response\n```shell\nGET http://localhost:4444/api/vehicles\n\nHTTP/1.1 200 \nX-Content-Type-Options: nosniff\nX-XSS-Protection: 0\nCache-Control: no-cache, no-store, max-age=0, must-revalidate\nPragma: no-cache\nExpires: 0\nX-Frame-Options: DENY\nContent-Type: application/json\nTransfer-Encoding: chunked\nDate: Wed, 28 Aug 2024 20:20:55 GMT\n\n[\n  {\n    \"id\": 1,\n    \"passengerID\": null,\n    \"vehicleID\": null,\n    \"vehicleManufacturer\": \"Toyota\",\n    \"vehicleModel\": \"Camry\",\n    \"vehicleLicenseNumber\": \"GT453\",\n    \"bookingRequestTime\": null,\n    \"bookingConfirmedTime\": null,\n    \"bookingStartTime\": null,\n    \"bookingEndTime\": null\n  },\n  {\n    \"id\": 2,\n    \"passengerID\": null,\n    \"vehicleID\": null,\n    \"vehicleManufacturer\": \"Mercedes Benz\",\n    \"vehicleModel\": \"C45\",\n    \"vehicleLicenseNumber\": \"GT454\",\n    \"bookingRequestTime\": null,\n    \"bookingConfirmedTime\": null,\n    \"bookingStartTime\": null,\n    \"bookingEndTime\": null\n  },\n  {\n    \"id\": 3,\n    \"passengerID\": null,\n    \"vehicleID\": null,\n    \"vehicleManufacturer\": \"Tesla\",\n    \"vehicleModel\": \"Model S Plaid\",\n    \"vehicleLicenseNumber\": \"GT455\",\n    \"bookingRequestTime\": null,\n    \"bookingConfirmedTime\": null,\n    \"bookingStartTime\": null,\n    \"bookingEndTime\": null\n  },\n  {\n    \"id\": 4,\n    \"passengerID\": null,\n    \"vehicleID\": null,\n    \"vehicleManufacturer\": \"Honda\",\n    \"vehicleModel\": \"Civic\",\n    \"vehicleLicenseNumber\": \"GT456\",\n    \"bookingRequestTime\": null,\n    \"bookingConfirmedTime\": null,\n    \"bookingStartTime\": null,\n    \"bookingEndTime\": null\n  },\n  {\n    \"id\": 5,\n    \"passengerID\": null,\n    \"vehicleID\": null,\n    \"vehicleManufacturer\": \"Hyundai\",\n    \"vehicleModel\": \"Elantra\",\n    \"vehicleLicenseNumber\": \"GT457\",\n    \"bookingRequestTime\": null,\n    \"bookingConfirmedTime\": null,\n    \"bookingStartTime\": null,\n    \"bookingEndTime\": null\n  },\n  {\n    \"id\": 6,\n    \"passengerID\": null,\n    \"vehicleID\": null,\n    \"vehicleManufacturer\": \"Nissan\",\n    \"vehicleModel\": \"Almera\",\n    \"vehicleLicenseNumber\": \"GT458\",\n    \"bookingRequestTime\": null,\n    \"bookingConfirmedTime\": null,\n    \"bookingStartTime\": null,\n    \"bookingEndTime\": null\n  }\n]\nResponse file saved.\n\u003e 2024-08-28T202055.200.json\n\nResponse code: 200; Time: 92ms (92 ms); Content length: 1396 bytes (1.4 kB)\n\n```\n\n# Book Car As Passenger or Executive Passenger \n\n### Request \n\u003e format: /api/bookings/{vehicleID}/car/{passengerID}/user\n\n```shell\nPOST http://localhost:4444/api/bookings/2/car/7/user\nAccept: application/json\nContent-Type: application/json\nAuthorization: Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJrb2ZpX3Bhc3NlbmdlckB5YWhvby5jb20iLCJpYXQiOjE3MjQ4NzYwMDQsImV4cCI6MTcyNTIzNjAwNH0.g2qo2eosXt65ZGIqCz0IFO1eQRWgB_EU_szA4ScDo3IMzLwSJIswf5ESz8UkqJqIuEKCHJJfvLfRHMjkydj6Mw\n\n{\n  \"timeSlot\": \"HOUR_1\"\n}\n\n```\n\n### Response\n```shell\nPOST http://localhost:4444/api/bookings/2/car/7/user\nAccept: application/json\nContent-Type: application/json\nAuthorization: Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJrb2ZpX3Bhc3NlbmdlckB5YWhvby5jb20iLCJpYXQiOjE3MjQ4NzYwMDQsImV4cCI6MTcyNTIzNjAwNH0.g2qo2eosXt65ZGIqCz0IFO1eQRWgB_EU_szA4ScDo3IMzLwSJIswf5ESz8UkqJqIuEKCHJJfvLfRHMjkydj6Mw\n\n{\n  \"timeSlot\": \"HOUR_1\"\n}\n\n\u003c\u003e 2024-08-28T203207.201.json\n\n```\n\n# Confirm Booking \n\u003e /api/bookings/{vehicleBookingID}/confirm\n\u003e Only a user with Driver role can confirm a booking by passenger so we need to create a driver user and use their jwt for this endpoint\n\n### Request \n```shell\nPUT http://localhost:4444/api/bookings/17/confirm\nAccept: application/json\nContent-Type: application/json\nAuthorization: Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJkcml2ZXJfcm9kbmV5QGdtYWlsLmNvbSIsImlhdCI6MTcyNDg3ODM0MiwiZXhwIjoxNzI1MjM4MzQyfQ.uHDfGCC5oAX-IGubsf_Z26PyL4pFwaaMOJ-G-mmrHEd47mpuxKJPO0k2XopogwHHSDWKKBKtbkn4qEIDic2zXA\n\n```\n### Response\n```shell\nPUT http://localhost:4444/api/bookings/17/confirm\n\nHTTP/1.1 204 \nDate: Wed, 28 Aug 2024 20:57:46 GMT\n\n\u003cResponse body is empty\u003e\n```\n\n### we follow the same process to make for /{vehicleBookingID}/cancel and /executive/{vehicleBookingID}\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frbkgh%2Frizla","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frbkgh%2Frizla","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frbkgh%2Frizla/lists"}