{"id":15028403,"url":"https://github.com/thombergs/buckpal","last_synced_at":"2025-05-15T04:07:55.942Z","repository":{"id":37664001,"uuid":"185681872","full_name":"thombergs/buckpal","owner":"thombergs","description":"An example approach for implementing a Clean/Hexagonal Architecture","archived":false,"fork":false,"pushed_at":"2024-06-03T12:19:19.000Z","size":528,"stargazers_count":2311,"open_issues_count":25,"forks_count":692,"subscribers_count":72,"default_branch":"master","last_synced_at":"2025-04-14T05:56:37.465Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://leanpub.com/get-your-hands-dirty-on-clean-architecture/overview","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/thombergs.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":"2019-05-08T21:29:43.000Z","updated_at":"2025-04-13T03:49:18.000Z","dependencies_parsed_at":"2024-09-21T04:02:19.279Z","dependency_job_id":"66f4afd3-b698-4078-9513-5cd36ee183ab","html_url":"https://github.com/thombergs/buckpal","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/thombergs%2Fbuckpal","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thombergs%2Fbuckpal/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thombergs%2Fbuckpal/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thombergs%2Fbuckpal/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thombergs","download_url":"https://codeload.github.com/thombergs/buckpal/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254270656,"owners_count":22042860,"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":[],"created_at":"2024-09-24T20:08:15.258Z","updated_at":"2025-05-15T04:07:50.932Z","avatar_url":"https://github.com/thombergs.png","language":"Java","funding_links":[],"categories":["Architectural Style","\u003ca name=\"Java\"\u003e\u003c/a\u003eJava"],"sub_categories":["Clean Architecture"],"readme":"# Get Your Hands Dirty on Clean Architecture\n\nThis repository implements a small web app in the Hexagonal Architecture style, as discussed in the book \"Get Your Hands Dirty on Clean Architecture\".\n\nThe code has been updated to the 2nd edition of the book.\n\n## Get the print book\n\n[![Get Your Hands Dirty on Clean Architecture cover](img/cover-packt-450.png)](https://www.amazon.com/Your-Hands-Dirty-Clean-Architecture/dp/180512837X?keywords=get+your+hands+dirty+on+clean+architecture\u0026amp;qid=1689324075\u0026amp;sprefix=Get+Your+Hands+Dirty+on+Clean+,aps,424\u0026amp;sr=8-2\u0026_encoding=UTF8\u0026tag=reflectorin0c-20\u0026linkCode=ur2\u0026linkId=c04a12e6dd6d399747b0cdce328650a5\u0026camp=1789\u0026creative=9325)\n\n## Get the e-book\n\nThis is the self-published version, which is only available electronically.\n\n[![Get Your Hands Dirty on Clean Architecture cover](img/cover-430.png)](https://thombergs.gumroad.com/l/gyhdoca)\n\n## Companion Articles\n\n* [Hexagonal Architecture with Java and Spring](https://reflectoring.io/spring-hexagonal/)\n* [Building a Multi-Module Spring Boot Application with Gradle](https://reflectoring.io/spring-boot-gradle-multi-module/)\n\n## Prerequisites\n\n* JDK 17\n* this project uses Lombok, so enable annotation processing in your IDE\n\n## About the book\n### All About Hexagonal Architecture\n\n* Learn the concepts behind \"Clean Architecture\" and \"Hexagonal Architecture\".\n* Explore a hands-on approach of implementing a Hexagonal architecture with example code [on GitHub](https://github.com/thombergs/buckpal).\n* Develop your domain code independent of database or web concerns.\n\n![Hexagonal Architecture](img/hexagonal-architecture.png)\n\n### Get a Grip on Your Layers\n\n* Learn about potential problems of the common layered architecture style.\n* Free your domain layer of oppressive dependencies using dependency inversion.\n* Structure your code in an architecturally expressive way.\n* Use different methods to enforce architectural boundaries.\n* Learn the consequences of shortcuts and when to accept them.\n* ... and [more](#table-of-contents).\n\n![Dependencies](img/dependencies.png)\n\n### What Readers Say\n\n\u003e Tom Hombergs has done a terrific job in explaining clean architecture - from concepts to code. Really wish more technical books would be as clear as that one!\n\nGernot Starke - Fellow at [INNOQ](https://www.innoq.com/en/staff/gernot-starke/), Founder of [arc42](https://arc42.org/), Author of Software Architecture Books, Coach, and Consultant\n\n\u003e Love your book. One of the most practical books on hexagonal architecture I have seen/read so far.\n\nMarten Deinum - Spring Framework Contributor and Author of [\"Spring 5 Recipes\"](https://www.amazon.com/Spring-5-Recipes-Problem-Solution-Approach/dp/1484227891\u0026tag=reflectorin0c-20) and [\"Spring Boot 2 Recipes\"](https://www.amazon.com/Spring-Boot-Recipes-Problem-Solution-Approach/dp/1484239628\u0026tag=reflectorin0c-20)\n\n\u003e A book taken right out of the machine room of software development. Tom talks straight from his experience and guides you through the day-to-day trade-offs necessary to deliver clean architecture.\n\nSebastian Kempken - Software Architect at Adcubum\n\n\u003e Thank you for the great book, it helped me gain significant insight into how one would go about implementing hexagonal and DDD in a modern Spring project.\n\nSpyros Vallianos - Java Developer at Konnekt-able\n\n\u003e After reading it I had one of these 'aha' moments when things finally click in your brain.\n\nManos Tzagkarakis - Java Developer at Datawise\n\n### Table of Contents\n\n1. Maintainability\n2. What's Wrong with Layers?\n3. Inverting Dependencies\n4. Organizing Code\n5. Implementing a Use Case\n6. Implementing a Web Adapter\n7. Implementing a Persistence Adapter\n8. Testing Architecture Elements\n9. Mapping Between Boundaries\n10. Assembling the Application\n11. Taking Shortcuts Consciously\n12. Enforcing Architecture Boundaries\n13. Managing Multiple Bounded Contexts\n14. A Component-Based Approach to Software Architecture\n15. Deciding on an Architecture Style\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthombergs%2Fbuckpal","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthombergs%2Fbuckpal","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthombergs%2Fbuckpal/lists"}