Creating a CRUD component in Kotlin that can work as a starting building block in a microservice world.
Dependency injection - framework or just create classes?
- Implement multiple routes
- Connect Ktorm to SQL database
- Correlation ID on calls
- API tests (http calls/headers etc.)
- Service tests (dependency injection)
- Repository tests (DB testing! Create DB in docker container and run queries)
- Tests that uses MockK (mocking API, DI and DB)
- Tests that uses JUnit5
- Add Jacoco for test coverage
- Implement keycloak authentication (or other sufficient auth standard protocol)
- Decide on dependency injection
- Docker multistage build
- Expose Prometheus stats
- Swagger documentation
- Find nice-to-haves and create a prioritized TODO
Ktor is the web application framework used. It runs a Netty server, but it should be easy to configure it to run Jetty/Tomcat/CIO instead.
Crudk uses OIDC/Auth2.0 in order to be able to work with Keycloak (KC). WIP!
Code to handle other authentication protocols++ will be implemented, but only after the KC implementation is working.
The database framework Crudk will use. WIP!
The test framework Crudk uses. WIP!
If it fails horribly at doing its job, JUnit 5 will take over.
The mocking library for testing Crudk uses. WIP!