Skip to content

Repository files navigation

Small Kotlin Multiplatform app built to learn KMP, with shared UI and logic across Android, Web, and the server. (done with the Claude help)

ReceiptsArchiver

A receipt archiver for Slovak eKasa fiscal receipts. Scan the QR code printed on a shop receipt, and the app looks it up via the eKasa API, saves it, and shows it in a searchable list with itemized detail — from Android or a browser.

Modules

  • core — shared API DTOs and the Ktor HTTP client used by both frontends.
  • app/shared — the Compose Multiplatform UI (list, detail, scanner screens) shared between Android and Web.
  • app/androidApp — Android entry point; the only target with the QR scanner.
  • app/webApp — Kotlin/Wasm entry point, compiled to a static web bundle.
  • server — Ktor backend: REST API, eKasa client, SQLite persistence via Exposed, and static hosting of the web bundle.

Running locally

  • Server: ./gradlew :server:run (port 8081)
  • Web app: ./gradlew :app:webApp:wasmJsBrowserDevelopmentRun (port 8080)
  • Android app: ./gradlew :app:androidApp:assembleDebug (or run from Android Studio; point API_BASE_URL in MainActivity.kt at your server's address,

Server configuration

The server reads its configuration from environment variables:

Variable Default Description
PORT 8081 HTTP port
HOST 0.0.0.0 Bind address
DB_PATH /data/receipts.db SQLite database file
EKASA_BASE_URL https://ekasa.financnasprava.sk eKasa API base URL
WEB_DIR /app/web Static web bundle directory served at /

The API and the web UI are served on the same port — /api/* routes handle the REST API, and everything else falls back to the static web bundle (with SPA-style fallback to index.html).

Docker

Build and run as a single container:

docker build -t receipts .
docker run -p 8080:8080 -v receipts-data:/data receipts

The image bundles both the server and the pre-built web app; receipts persist in the /data volume.

About

Small eKasa receipt scanning tool done with Kotlin Multiplatform

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages