Skip to content

LabSTK/LakePile

Repository files navigation

LakePile

A Kotlin Multiplatform library for data lake-like storage and querying, with a standalone Ktor server and a Compose Multiplatform demo app.

Module Structure

LakePile/
├── core/            KMP library — data lake storage & query engine
├── shared-api/      KMP library — shared DTOs & API route contracts
├── client-sdk/      KMP library — Ktor client wrapper for the server
├── server/          JVM app — standalone Ktor server
├── demoApp/         KMP app — Compose Multiplatform demo (Android/iOS/Desktop)
├── iosApp/          iOS Xcode project (wraps demoApp framework)
└── build-logic/     Gradle convention plugins for shared build config

Dependency Graph

demoApp  → core, client-sdk → shared-api
server   → core, shared-api
  • core — standalone, zero internal dependencies
  • shared-api — standalone, zero internal dependencies
  • client-sdk — depends on shared-api
  • server — depends on core + shared-api
  • demoApp — depends on core + client-sdk

Build & Run

Core Library

./gradlew :core:build        # Build for all targets
./gradlew :core:jvmTest      # Run JVM tests

Server

./gradlew :server:run         # Start Ktor server on http://localhost:8080

The server requires an API key for all requests. Set it via the LAKEPILE_API_KEY environment variable before starting:

# Option 1: export in your shell
export LAKEPILE_API_KEY=my-secret-key
./gradlew :server:run

# Option 2: use a .env file (e.g. with direnv or dotenv-cli)
echo "LAKEPILE_API_KEY=my-secret-key" > .env

Every API request must include the key in the X-Api-Key header:

curl -H "X-Api-Key: my-secret-key" http://localhost:8080/api/v1/collections

Demo App — Android

./gradlew :demoApp:assembleDebug

Demo App — Desktop (JVM)

./gradlew :demoApp:run

Demo App — iOS

Open the iosApp/ directory in Xcode and run from there.

Platforms

The KMP library targets: Android, iOS, JVM.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors