No description, website, or topics provided.
Kotlin Shell Batchfile
Switch branches/tags
Nothing to show
Clone or download
Latest commit 8c83149 May 17, 2017
Permalink
Failed to load latest commit information.
src Fixes May 9, 2017
.gitignore implementation May 3, 2017
api.iml Fixes May 9, 2017
kotlin-spring.png Add files via upload May 16, 2017
mvnw spring init Apr 29, 2017
mvnw.cmd spring init Apr 29, 2017
pom.xml Add some integration testing May 4, 2017
readme.md Update readme.md May 16, 2017

readme.md

RealWorld Example App using Kotlin and Spring

Kotlin + Spring 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 + Spring including CRUD operations, authentication, routing, pagination, and more.

We've gone to great lengths to adhere to the Kotlin + Spring 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 uses Spring (Web, Data, AOP, Cache) and the Kotlin language.

+ client/
    Some feign clients for testing
+ exception/
    Exceptions by the application
+ jwt/
    AOP advice that check for authentication using a defined @ApiKeySecured operation
+ model/
    + inout/
        Object for REST in/out operations
    JPA models
+ repository/
    + specification/
        Some specifications for JPA
    Spring repositories
+ service/
    Spring services
+ web/
    Spring controllers
- ApiApplication.kt <- The main class

Security

Instead of using Spring Security to implement an authenticator using JWT, I created a simple AOP advice that checks the Authorization header and put the user to be found in a ThreadLocal (see UserService).

The secret key and jwt issuer are stored in application.properties.

Database

It uses a H2 in memory database (for now), can be changed easily in the application.properties for any other database. You'll need to add the correct maven dependency for the needed Driver in pom.xml.

Getting started

You need Java and maven installed.

mvn spring-boot:run
open http://localhost:8080

Help

Please fork and PR to improve the code.

Kotlin

I've been using Kotlin for some time, but I'm no expert, so feel free to contribute and modify the code to make it more idiomatic!