http4kbox - http4k app deployed in multiple modes
This is a simple Dropbox clone built with http4k which uses S3 as a backing store, implemented in ~70 lines of code (when imports are excluded). It is designed to demo that http4k apps run identically in the following modes:
- As a Kotlin function with SunHttp dev server for tests - see app
- In a deployed local Undertow server + Apache HTTP client - see local
- To Heroku as a cloud-based Apache server (with Java HTTP client) deployed through a fully CD pipeline run on Travis - see heroku
- Into a Kubernetes cluster - see k8s
- As a pure Kotlin function deployed in a Serverless environment (AWS Lambda) - see serverless
- As a native Apache server binary running in GraalVM - see native
Apart from the switchable server backends and clients, the core app uses the following http4k modules and features:
http4k-core
<-- main HTTP libraryhttp4k-cloudnative
<-- for 12-factor configuration via environmental propertieshttp4k-aws
<-- replaces the Java AWS SDKhttp4k-template-handlebars
<-- for templatinghttp4k-multipart
<-- multipart form uploadshttp4k-testing-hamkrest
<-- for test assertions