calaloud
Thin-client Android reader for Calibre + FanFicFare + Kokoro TTS (Tauri v2 + Svelte 5)
- Stars
- 0
- Language
- TypeScript
- Created
- Aug 4, 2026
- Updated
- Aug 6, 2026
Introduction
Calaloud
A thin client Android (Tauri v2) reader for fanfic and ebooks. It does not bundle or host any service — it only connects to three separately-run services the user already has, each with its own codebase/docker image:
| Service | Role |
|---|---|
| Calibre content server | Book library (per-user libraries), EPUB download, progress column |
| Kokoro TTS (OpenAI-compatible) | Default narration voice |
| FanFicFare-as-a-service | Turns a story URL into an EPUB |
The client is a Svelte 5 UI wrapped in Tauri v2 producing an Android APK (a
desktop build is optional, same UI). It keeps the reader, library shelf, narration
playback, and an offline cache. All service-side logic (calibredb, FanFicFare worker,
TTS model) stays out of the binary.
User experience is modeled on the Webnovel app (library/shelf UX) and Librera Reader (reader ergonomics), with Kokoro TTS as the default voice.
Docs
docs/spec.md— detailed design spec.docs/plan.md— phased implementation plan.docs/TODO.md— tracked TODO / task checklist (rootTODO.mdis a pointer).docs/build.md— building the Android APK.docs/docker-compose.services.yml— reference Compose for the three services.
Status
Working Android client (Tauri v2). Builds and installs as an APK; see
docs/build.md and docs/TODO.md for what's done and what's next.
Quick facts
- Thin client: the app only points at user-configured service endpoints in Settings (Calibre, Kokoro, FanFicFare) — nothing service-side is bundled.
- Stack: Svelte 5 + Vite + TypeScript frontend; Tauri v2 native shell; IndexedDB offline cache; FanFicFare / Calibre / Kokoro HTTP clients.
- Dev environment: Nix dev-shell (
nix develop) provides Rust with Android targets, Android SDK + NDK + JDK 17, andcargo-tauri.