Skip to content

bossm0n5t3r/realworld-kotlin-ktor-exposed

Repository files navigation

GitHub last commit (branch)

RealWorld Example App

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 * Ktor* including CRUD operations, authentication, routing, pagination, and more.

We've gone to great lengths to adhere to the 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

Features

Here's a list of features included in this project:

Name Description
Routing Provides a structured routing DSL
Status Pages Provides exception handling for routes
Default Headers Adds a default set of headers to HTTP responses
Call Logging Logs client requests
Koin Provides dependency injection
kotlinx.serialization Handles JSON serialization using kotlinx.serialization library
Content Negotiation Provides automatic content conversion according to Content-Type and Accept headers
Exposed Adds Exposed database to your application
Jackson Handles JSON serialization using Jackson library
Authentication Provides extension point for handling the Authorization header
Authentication JWT Handles JSON Web Token (JWT) bearer authentication scheme
CORS Enables Cross-Origin Resource Sharing (CORS)

Getting started

Building & Running

To build or run the project, use one of the following tasks:

Task Description
./gradlew test Run the tests
./gradlew build Build everything
buildFatJar Build an executable JAR of the server with all dependencies included
buildImage Build the docker image to use with the fat JAR
publishImageToLocalRegistry Publish the docker image locally
run Run the server
runDocker Run using the local docker image

If the server starts successfully, you'll see the following output:

2024-12-04 14:32:45.584 [main] INFO  Application - Application started in 0.303 seconds.
2024-12-04 14:32:45.682 [main] INFO  Application - Responding at http://0.0.0.0:8080

About

RealWorld example application built with Kotlin + Ktor + Exposed

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages