{"id":18893254,"url":"https://github.com/manomanotech/hexa-playground","last_synced_at":"2026-02-26T23:30:18.351Z","repository":{"id":219946205,"uuid":"739443317","full_name":"ManoManoTech/hexa-playground","owner":"ManoManoTech","description":"This repo aims at showcasing hexagonal architecture, hexagonal testing and providing quick starts.","archived":false,"fork":false,"pushed_at":"2024-02-02T10:04:20.000Z","size":660,"stargazers_count":0,"open_issues_count":5,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-02-13T16:47:53.865Z","etag":null,"topics":["gradle-kotlin-dsl","hexagonal-architecture","kotlin","test"],"latest_commit_sha":null,"homepage":"","language":"Kotlin","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/ManoManoTech.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2024-01-05T15:23:35.000Z","updated_at":"2024-01-25T16:35:29.000Z","dependencies_parsed_at":"2024-02-02T00:07:41.870Z","dependency_job_id":null,"html_url":"https://github.com/ManoManoTech/hexa-playground","commit_stats":null,"previous_names":["manomanotech/hexa-playground"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ManoManoTech%2Fhexa-playground","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ManoManoTech%2Fhexa-playground/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ManoManoTech%2Fhexa-playground/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ManoManoTech%2Fhexa-playground/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ManoManoTech","download_url":"https://codeload.github.com/ManoManoTech/hexa-playground/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239869221,"owners_count":19710485,"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":["gradle-kotlin-dsl","hexagonal-architecture","kotlin","test"],"created_at":"2024-11-08T08:12:43.378Z","updated_at":"2026-02-26T23:30:18.291Z","avatar_url":"https://github.com/ManoManoTech.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Hexa playground\n\nThis repo aims at showcasing hexagonal architecture, hexagonal testing and providing a quick start.\n\nBeware though:\n\n- stack is updated \u0026 maintained on a best effort basis. Mind versions \u0026 dates if reusing,\n- for sure, it's likely plainly wrong: we're open to all feedbacks and suggestions.\n\n# Build\n\nFirst install a Java Development Kit (JDK) version 21 or higher, for example\nfrom [Eclipse Temurin](https://adoptium.net/temurin/releases/?package=jdk\u0026version=21)\n\nThen build with:\n\n```\n./gradlew test \n```\n\nThis compiles and runs tests on all sub modules.\n\nTest results are then available per module in `build/reports/tests/test/index.html`, for\nexample `heroes/build/reports/tests/test/index.html`.\n\n# On the difficulty of building long-lasting applications\n\nOften, software development's literature is all about technical details or how quick \u0026 easy it is to build applications.\n\nIn reality, creating a long-lasting application is a complex endeavor, with more failures than successes.\n\nThe present repo aims at helping application development being right. \n\nFor sure, all that follow is needed when dealing with significant \u0026 evolving business logic, seen as a long term\ninvestment. Not for \"fire \u0026 forget\" applications.\n\n## Long-lasting applications pillars\n\nBelow is a list of key points to have in mind when doing long-lasting application development.\n\nThen each module has a README.md detailing how it's implementing this mantra.\n\n### The need for clear business logic\n\nOften, business logic is scattered across the codebase, at all levels, mixed with technicalities.\n\nFor sure, it makes the business logic hard to get. Even worse: it makes the code hard to evolve.\n\n### Constant change!\n\nWhatever the difficulty of building the first version, new ones will come, and the faster they can be build the better.\n\nHow to achieve this?\n\nFirst, is having a clear business logic, decoupled from technicalities, as explained above.\n\nThen, it's the ability to change in confidence, knowing what broke and what didn't, to get the whole working again.\n\n### Factor errors out of existence\n\nA piece of code is obviously better when free of bug.\n\nIt's even better when most of the bugs can't happen by design.\n\n# Functional requirements \u0026 tech constraints\n\nWhen doing a tech showcase, which business model to use is often tricky.\n\nA made up application, called HeroesDesk, is the functional target. It's a mission tracker for heroes: familiar to\ndevelopers, yet allowing some complexity and with a clear mission statement.\n\nRead more about the requirements in [Functional requirement](FUNCTIONAL_REQUIREMENTS.md).\n\n# Implementation\n\nAn attempt at applying the above constraints can be seen in the below submodules.\n\nEach module has its own README.md, detailing how it's tackling the constraints.\n\n# License\n\nSee [License](LICENSE).\n\n# Code of conduct\n\nSee [Code of conduct](CODE_OF_CONDUCT.md).\n\n# Contributing\n\nSee [Contributing](CONTRIBUTING.md).","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmanomanotech%2Fhexa-playground","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmanomanotech%2Fhexa-playground","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmanomanotech%2Fhexa-playground/lists"}