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.
