This is a simple Dropbox clone built with http4k which uses S3 as a backing store, implemented in ~50 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 Helidon server (with Helidon client) deployed through a fully CD pipeline run on GitHubActions - 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 backen ds and clients, the core app uses the following http4k modules and features:
http4k-core
<-- main HTTP libraryhttp4k-config
<-- for 12-factor configuration via environmental propertieshttp4k-connect-amazon-s3
<-- replaces the Java AWS SDK with a lightweight http4k clienthttp4k-template-rocker
<-- for templatinghttp4k-multipart
<-- multipart form uploadshttp4k-testing-hamkrest
<-- for test assertions