Skip to content

Spring Boot Project Structure

Purpose

This standard defines the expected project structure for the future Algosure Spring Boot Modulith backend.

Logical Structure

src/main/java/com/algoza/algosure
  <module>
    api
    application
    domain
    infrastructure
  shared
src/main/resources
  db/changelog
src/test/java/com/algoza/algosure
  <module>
    api
    application
    domain
    infrastructure
    modulith

Resource Responsibilities

Area Responsibility
src/main/java Backend application code organized by module.
src/main/resources/db/changelog Future Liquibase changelogs owned by module.
src/test/java Tests mirroring module and layer structure.
shared Minimal shared kernel only.

Module Directory Rules

  • Each module has its own api, application, domain, and infrastructure areas.
  • Module internals are private unless exposed through approved APIs, application services, events, or projections.
  • A module must not place business behavior in shared infrastructure.
  • Future integration adapters live under infrastructure boundaries and do not define domain ownership.

Project Boundary Diagram

flowchart TB
    Root[com.algoza.algosure]
    Identity[identity module]
    Organization[organization module]
    Bid[bid module]
    Shared[shared kernel]
    Resources[resources/db/changelog]

    Root --> Identity
    Root --> Organization
    Root --> Bid
    Root --> Shared
    Root --> Resources