
Serves as the backend server and API, incorporating common models and utilities for streamlined development and integration.
The Backend server and API of Extopy, with common models and utilities.
The dependencies only ever point inwards: domain knows nothing about Ktor or about the database,
and presentation knows nothing about the database.
| Module | Depends on | What lives there |
|---|---|---|
api |
— | The contract: serializable models, the @Resource of every endpoint, requests, responses |
client |
api |
The HTTP client the applications talk to the API through |
domain |
— | The business rules: models, repository and service contracts, use cases |
infrastructure |
domain |
What implements those contracts: database, tokens, passwords, emails, i18n |
presentation |
api, domain
|
The HTTP layer: routes, mappers, web pages, ktor configuration |
app |
all four of the above | The assembly, the configuration, and the end-to-end tests |
api and client are multiplatform and published to the clients; the rest is JVM only.
Run it with ./gradlew :app:run, and everything with ./gradlew build. The API documents itself at
/docs, off the routes that are actually mounted.
The Backend server and API of Extopy, with common models and utilities.
The dependencies only ever point inwards: domain knows nothing about Ktor or about the database,
and presentation knows nothing about the database.
| Module | Depends on | What lives there |
|---|---|---|
api |
— | The contract: serializable models, the @Resource of every endpoint, requests, responses |
client |
api |
The HTTP client the applications talk to the API through |
domain |
— | The business rules: models, repository and service contracts, use cases |
infrastructure |
domain |
What implements those contracts: database, tokens, passwords, emails, i18n |
presentation |
api, domain
|
The HTTP layer: routes, mappers, web pages, ktor configuration |
app |
all four of the above | The assembly, the configuration, and the end-to-end tests |
api and client are multiplatform and published to the clients; the rest is JVM only.
Run it with ./gradlew :app:run, and everything with ./gradlew build. The API documents itself at
/docs, off the routes that are actually mounted.