Hi! I created a backend based on the Clean Architecture principles. Feedback would be very much appreciated!
The application is separated into three modules: Domain, Usecases and Adapters
• Domain module contains all entities, it's validation and repository interfaces
• Usecases module performs actions on the domain entities and repositories and does authorization
The domain and usecase modules do not have any external dependencies.
• Adapter layer: each adapter is implemented as a standalone module, lowering dependence on specific frameworks and libraries and making them interchangable. The server module consumes all adapters (e.g. databases, (graphql) endpoints, authentication logic)
GraphQL endpoints are auto-generated from the Usecases
Used technologies:
Ktor, JWT, Exposed, Flyway, KGraphQL/GraphQL generated endpoints.
https://github.com/ESchouten/CleanArchitecture