• Stars
    star
    153
  • Rank 235,847 (Top 5 %)
  • Language
    Kotlin
  • License
    MIT License
  • Created about 5 years ago
  • Updated 7 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Real world backend API built in Kotlin with Ktor + Kodein + Exposed

Travis Codacy Badge BCH compliance

RealWorld Example App

Kotlin + Ktor codebase containing real world examples (CRUD, auth, advanced patterns, etc) that adheres to the RealWorld spec and API

RealWorld

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.

How it works

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:

Structure

  + 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

Getting started

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

Help

Please fork and PR to improve the code.