{"id":19316616,"url":"https://github.com/wisskirchenj/car-sharing","last_synced_at":"2026-05-16T00:33:49.083Z","repository":{"id":188317721,"uuid":"677149605","full_name":"wisskirchenj/car-sharing","owner":"wisskirchenj","description":"Spring Boot JPA application on command line implementing a car sharing service.","archived":false,"fork":false,"pushed_at":"2024-04-22T12:18:47.000Z","size":84,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-06T04:12:34.837Z","etag":null,"topics":["command-line-app","java20","jpa-persistence-applications","spring-boot"],"latest_commit_sha":null,"homepage":"","language":"Java","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/wisskirchenj.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}},"created_at":"2023-08-10T21:37:11.000Z","updated_at":"2024-04-22T12:18:51.000Z","dependencies_parsed_at":"2024-04-22T13:38:38.742Z","dependency_job_id":"ab514b51-2735-4888-9735-deb83cb3e791","html_url":"https://github.com/wisskirchenj/car-sharing","commit_stats":null,"previous_names":["wisskirchenj/car-sharing"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wisskirchenj%2Fcar-sharing","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wisskirchenj%2Fcar-sharing/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wisskirchenj%2Fcar-sharing/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wisskirchenj%2Fcar-sharing/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/wisskirchenj","download_url":"https://codeload.github.com/wisskirchenj/car-sharing/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240420938,"owners_count":19798501,"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":["command-line-app","java20","jpa-persistence-applications","spring-boot"],"created_at":"2024-11-10T01:12:01.733Z","updated_at":"2025-11-17T00:01:41.231Z","avatar_url":"https://github.com/wisskirchenj.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# IDEA EDU Course\n\nImplemented in the \u003cb\u003eJava Backend Developer\u003c/b\u003e Track of hyperskill.org JetBrain Academy.  \n\nProject goal is to do another Spring Boot JPA project - here with Command Line and Runner.\n\n## Technology / External Libraries\n\n- Java 20\n- Spring Boot CommandLineRunner / JPA\n- Lombok\n- Slf4j\n- Tests with Junit-Jupiter and Mockito\n- Gradle 8.3\n\n## Program description\n\nThe application will provide a command line CRUD application that manages a car-sharing service allowing companies to\nrent out their cars and find customers.\n\n## Project completion\n\nProject was completed on 18.08.23.\n\n## Repository Contents\n\nSources for all project tasks (4 stages) with tests and configurations.\n\n## Progress\n\n10.08.23 Project started. Setup of build and repo with gradle on Kotlin basis.\n\n10.08.23 Stage 1 completed. Just the creation of an H2-file database with a company table. Modelled with JPA entity and \nJPARepository and have Spring JPA to the DDL-creation. Take database-filename from program arguments and programatically\nset the `spring.datasource.url` property before running the `SpringApplication`.\n\n14.08.23 Stage 2 completed. Have command line menus provided as Spring beans (`@Controller`) and have a stdin-scanner \nprovided as bean. The CommandLineRunner uses a service to connect (query / insert) with the database vie the JPA-repository.\n\n17.08.23 Stage 3 completed. Add second entity `Car` with JPA-Repository and Service, connect it via `@ManyToOne` and\n`@JoinColumn` to the `Company`-table to generate a foreign key. Expand the menu structure (a bit weird requirements).\n\n17.08.23 Final Stage 4 completed. Third entity `Customer` was needed, that got its repository and service too. It has a \nnullable `@OneToOne` connection to the `Car` entity. Used generic AbstractMenuController to reduce menu flow\ncomplexity. Also a JQL-`@Query` with `LEFT JOIN` was needed to query available cars without altering the tables. \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwisskirchenj%2Fcar-sharing","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwisskirchenj%2Fcar-sharing","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwisskirchenj%2Fcar-sharing/lists"}