{"id":21877638,"url":"https://github.com/rbiedrawa/spring-api-first-design-poc","last_synced_at":"2026-04-13T23:04:39.132Z","repository":{"id":162193113,"uuid":"465924861","full_name":"rbiedrawa/spring-api-first-design-poc","owner":"rbiedrawa","description":"This repository demonstrates an Api First Design approach of building simple Spring Boot Todo Service.  ","archived":false,"fork":false,"pushed_at":"2022-03-04T13:07:02.000Z","size":130,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-26T18:17:20.561Z","etag":null,"topics":["api-first","contract-first","contract-first-approach","gradle","intelij","open-api-v3","spring-actuator","spring-boot","swagger","swagger-codegen","swagger-ui"],"latest_commit_sha":null,"homepage":"","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/rbiedrawa.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":"2022-03-04T00:08:05.000Z","updated_at":"2022-03-04T13:14:17.000Z","dependencies_parsed_at":null,"dependency_job_id":"6a8d7245-aacf-417d-be8e-3696da2417c2","html_url":"https://github.com/rbiedrawa/spring-api-first-design-poc","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rbiedrawa%2Fspring-api-first-design-poc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rbiedrawa%2Fspring-api-first-design-poc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rbiedrawa%2Fspring-api-first-design-poc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rbiedrawa%2Fspring-api-first-design-poc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rbiedrawa","download_url":"https://codeload.github.com/rbiedrawa/spring-api-first-design-poc/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244885518,"owners_count":20526293,"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":["api-first","contract-first","contract-first-approach","gradle","intelij","open-api-v3","spring-actuator","spring-boot","swagger","swagger-codegen","swagger-ui"],"created_at":"2024-11-28T08:09:50.984Z","updated_at":"2026-04-13T23:04:39.104Z","avatar_url":"https://github.com/rbiedrawa.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Api First Design - Spring Boot demo\n\nThis repository demonstrates an api first approach of building simple `Todo Service`.\n\nContract first means that we're developing a specification before we begin implementing our service.\n\n## Features\n\n* Api First Design\n* OpenAPI 3.0\n* OpenAPI Generator\n* Swagger UI\n* Grouped APIs in SwaggerUI\n\n## Getting Started\n\n### Prerequisites:\n\n* Java 11\n\n### Usage:\n\n1. Check **Todo Service** OpenAPI specification. Open [src/main/resources/api.yml](./src/main/resources/api.yml)\n2. Generate Spring controllers and models from the specification using Gradle plugin\n    ```shell\n    ./gradlew openApiGenerate\n    ```\n3. Investigate generated models and controllers interfaces under `build/generated/sources/src/main/java` directory\n4. Check [TodoController](./src/main/java/com/rbiedrawa/app/controllers/TodoController.java) implementation\n5. Add new endpoint or model to the service\n   1. Update OpenAPI spec in [api.yml](./src/main/resources/api.yml)\n   2. Generate the new models or controllers by running again`./gradlew openApiGenerate`\n   3. Implement any new features \n6. Start **Todo Service**\n   ```shell\n   ./gradlew bootRun\n   ```\n7. Open [Swagger UI](http://localhost:8080/swagger-ui.html) page and play with API 😉\n   ![grouped-api.png](./docs/img/grouped-api.png)\n\n## Useful tools\n\n* [Swagger Editor](https://editor.swagger.io/)\n* [IntelliJ - OpenAPI](https://www.jetbrains.com/help/idea/openapi.html)\n* [OpenAPI (Swagger) Editor - IntelliJ Plugin](https://plugins.jetbrains.com/plugin/14837-openapi-swagger-editor)\n\n## References\n\nFor further reference, please consider the following sections:\n\n* [Understanding API-First Development](https://tanzu.vmware.com/developer/guides/api-first-development/)\n* [Bringing together OpenAPI 3 and Spring Boot](https://www.youtube.com/watch?v=utRxyPfFlDw)\n\n## License\n\nDistributed under the MIT License. See `LICENSE` for more information.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frbiedrawa%2Fspring-api-first-design-poc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frbiedrawa%2Fspring-api-first-design-poc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frbiedrawa%2Fspring-api-first-design-poc/lists"}