This is a POC project that uses some concepts of Clean Architecture. It integrates with Harvard Art Museums API to list art pieces and users can add to favorite list.
The core of my application that doesn't depend on the external modules by DIP (Dependency Inversion Principle). It refers only to abstractions, not to concretions.
- Entities
- Use Cases
This is the module that implements the interfaces exposed by Domain, therefore integrating with the infrastructure and creating an entrypoint to Web.
- Controllers
- Gateways
- DAOs
- DB
- Web
Due to DIP the Domain module doesn't care about the external modules so the diagram gonna be look like that:
[API] -> [Domain]
- DI/SL: Koin
- Web: Javalin
- HTTP: Fuel
- ORM: Exposed
- Encryption: Spring Security BCrypt
- Authentication: Java JWT
- Test: JUnit 4 & MockK
- Documentation: OpenAPI Plugin