Kotlin + Ktor codebase containing real world examples (CRUD, auth, advanced patterns, etc) that adheres to the RealWorld spec and API
This codebase was created to demonstrate a fully fledged fullstack application built with Kotlin + Ktor + Kodein + Exposed including CRUD operations, authentication, routing, pagination, and more.
We've gone to great lengths to adhere to the Kotlin + Ktor community styleguides & best practices.
For more information on how to this works with other frontends/backends, head over to the RealWorld repo.
The application was built with:
- Kotlin as programming language
- Ktor as web framework
- Kodein as dependency injection framework
- Jackson as data bind serialization/deserialization
- Java-jwt for JWT spec implementation
- HikariCP as datasource to abstract driver implementation
- H2 as database
- Exposed as Sql framework to persistence layer
- slugify
Tests:
+ config/
All app setups. Ktor, Kodein and Database
+ domain/
+ repository/
Persistence layer and tables definition
+ service/
Logic layer and transformation data
+ ext/
Extension of String for email validation
+ utils/
Jwt and Encrypt classes
+ web/
+ controllers
Classes and methods to mapping actions of routes
Router definition to features and exceptions
- App.kt <- The main class
You need just JVM installed.
The server is configured to start on 8080.
Build:
./gradlew clean build
Start the server:
./gradlew run
In the project have the spec-api with the README and collections to execute backend tests specs realworld.
Execute tests and start the server:
./gradlew run & APIURL=http://localhost:8080 ./spec-api/run-api-tests.sh
Please fork and PR to improve the code.