Kotlin + Javalin 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 + Javalin + Koin + Exposed including CRUD operations, authentication, routing, pagination, and more.
We've gone to great lengths to adhere to the Kotlin + Javalin 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 made mainly to demo the functionality of Javalin framework 71.
The application was built with:
- Kotlin as programming language
- Javalin as web framework
- Koin 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. Javalin, Koin 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
It uses a H2 in memory database (for now), can be changed easily in the koin.properties
for any other database.
You'll need to add the correct dependency for the needed Driver
in build.gradle
.
You need just JVM installed.
The server is configured to start on 7000 with api
context, but you can change in koin.properties
.
./gradlew clean build
./gradlew run
In the project have the spec-api with the README and collections to execute backend tests specs realworld.
You can access the h2-console at console.
./gradlew run & APIURL=http://localhost:7000/api ./spec-api/run-api-tests.sh
Please fork and PR to improve the code.