{"id":14972937,"url":"https://github.com/spring-projects/spring-modulith","last_synced_at":"2026-01-23T00:40:31.380Z","repository":{"id":43304766,"uuid":"510838846","full_name":"spring-projects/spring-modulith","owner":"spring-projects","description":"Modular applications with Spring Boot","archived":false,"fork":false,"pushed_at":"2025-05-02T14:48:58.000Z","size":4519,"stargazers_count":897,"open_issues_count":83,"forks_count":155,"subscribers_count":27,"default_branch":"main","last_synced_at":"2025-05-02T15:46:50.886Z","etag":null,"topics":["architecture","modularity","spring-boot"],"latest_commit_sha":null,"homepage":"https://spring.io/projects/spring-modulith","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/spring-projects.png","metadata":{"files":{"readme":"readme.adoc","changelog":null,"contributing":"CONTRIBUTING.adoc","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,"zenodo":null}},"created_at":"2022-07-05T17:46:27.000Z","updated_at":"2025-05-02T14:49:02.000Z","dependencies_parsed_at":"2023-10-14T21:25:31.502Z","dependency_job_id":"c98a3d35-77d4-45de-bdf4-5040650f68b3","html_url":"https://github.com/spring-projects/spring-modulith","commit_stats":{"total_commits":638,"total_committers":52,"mean_commits":12.26923076923077,"dds":0.3887147335423198,"last_synced_commit":"2a807cc21396ca246e602d3721a8f09b41407e15"},"previous_names":["spring-projects/spring-modulith"],"tags_count":69,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spring-projects%2Fspring-modulith","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spring-projects%2Fspring-modulith/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spring-projects%2Fspring-modulith/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spring-projects%2Fspring-modulith/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/spring-projects","download_url":"https://codeload.github.com/spring-projects/spring-modulith/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254209859,"owners_count":22032897,"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":["architecture","modularity","spring-boot"],"created_at":"2024-09-24T13:47:47.354Z","updated_at":"2026-01-23T00:40:31.374Z","avatar_url":"https://github.com/spring-projects.png","language":"Java","readme":"= Spring Modulith image:https://img.shields.io/badge/Revved%20up%20by-Develocity-06A0CE?logo=Gradle\u0026labelColor=02303A[\"Revved up by Develocity\", link=\"https://ge.spring.io/scans?search.rootProjectNames=Spring Modulith\"]\n\n:docs: https://docs.spring.io/spring-modulith/reference/\n\nSpring Modulith allows developers to build well-structured Spring Boot applications and guides developers in finding and working with link:{docs}fundamentals.html#modules[application modules] driven by the domain.\nIt supports the link:{docs}verification.html[verification] of such modular arrangements, link:{docs}testing.html[integration testing] individual modules, link:{docs}production-ready.html#observability[observing] the application's behavior on the module level and creating link:{docs}documentation.html[documentation snippets] based on the arrangement created.\n\n== Quickstart\n\n. Create a Spring Boot application on https://start.spring.io\n. Add Spring Modulith to your application by adding this to your `pom.xml`:\n+\n[source, xml]\n----\n\u003c!-- Include the BOM for simplified version management --\u003e\n\u003cdependencyManagement\u003e\n  \u003cdependencies\u003e\n    \u003cdependency\u003e\n      \u003cgroupId\u003eorg.springframework.modulith\u003c/groupId\u003e\n      \u003cartifactId\u003espring-modulith-bom\u003c/artifactId\u003e\n      \u003cversion\u003e2.0.2\u003c/version\u003e\n      \u003cscope\u003eimport\u003c/scope\u003e\n      \u003ctype\u003epom\u003c/type\u003e\n    \u003c/dependency\u003e\n  \u003c/dependencies\u003e\n\u003c/dependencyManagement\u003e\n\n\u003cdependencies\u003e\n\n  \u003c!-- The test dependency to pull in verification APIs --\u003e\n\n  \u003cdependency\u003e\n    \u003cgroupId\u003eorg.springframework.modulith\u003c/groupId\u003e\n    \u003cartifactId\u003espring-modulith-starter-test\u003c/artifactId\u003e\n    \u003cscope\u003etest\u003c/scope\u003e\n  \u003c/dependency\u003e\n\n\u003c/dependencies\u003e\n----\n. Create a Java package arrangement that puts business modules as link:{docs}fundamentals.html[direct sub-packages of the application's main package].\n+\n[source, text, subs=\"macros\"]\n----\n□ Example\n└─ □ src/main/java\n   ├─ □ example           \u003c1\u003e\n   |  └─ Application.java\n   ├─ □ example.inventory \u003c2\u003e\n   |  └─ …\n   └─ □ example.order     \u003c2\u003e\n      └─ …\n----\n\u003c1\u003e The application root package\n\u003c2\u003e Application module packages\n. Create link:{docs}fundamentals.html#modules[an `ApplicationModules` model], run link:{docs}verification.html[verifications] and link:{docs}documentation.html[create documentation snippets].\n+\n[source, java]\n----\nclass ApplicationTests {\n\n  @Test\n  void writeDocumentationSnippets() {\n\n    var modules = ApplicationModules.of(Application.class).verify(); \u003c1\u003e\n\n    new Documenter(modules) \u003c2\u003e\n      .writeModulesAsPlantUml()\n      .writeIndividualModulesAsPlantUml();\n  }\n}\n----\n\u003c1\u003e Creates application module model and link:{docs}verification.html[verifies its structure].\n\u003c2\u003e Renders link:{docs}documentation.html[Asciidoctor snippets] (component diagrams, application module canvas) to `target/modulith-docs`.\n. Run link:{docs}testing.html[integration tests] for individual application modules.\n+\n[source, text, subs=\"macros\"]\n----\n□ Example\n└─ □ src/test/java\n   └─ □ example.order\n      └─ OrderModuleIntegrationTests.java\n----\n+\n[source, java]\n----\n@ApplicationModuleTests\nclass OrderModuleIntegrationTests {\n\n  @Test\n  void someTestMethod() { … }\n}\n----\n\n== Reference documentation\n\nFind the reference documentation link:{docs}[here].\n\n== Contributing\n\nhttps://help.github.com/articles/creating-a-pull-request[Pull requests] are welcome. Note, that we expect everyone to follow the https://github.com/spring-projects/.github/blob/main/CODE_OF_CONDUCT.md[code of conduct].\n\n=== What you will need\n\n* Git\n* Java 17 or higher\n* Docker version 1.6.0 or higher\n\n=== Get the Source Code\n\nClone the repository\n\n[source,bash]\n----\ngit clone git@github.com:spring-projects/spring-modulith.git\ncd spring-modulith\n----\n\n=== Build the code\n\nTo compile, test, and build\n\n[source,bash]\n----\n./mvnw -B\n----\n\n== License\nSpring Modulith is Open Source software released under the\nhttps://www.apache.org/licenses/LICENSE-2.0.html[Apache 2.0 license].\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fspring-projects%2Fspring-modulith","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fspring-projects%2Fspring-modulith","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fspring-projects%2Fspring-modulith/lists"}