$ show Aryan-Raj3112/episteme
Episteme is a modern, cross-platform e-book and document reader built with Kotlin Multiplatform and Compose Multiplatform. It supports a wide array of formats including EPUB, PDF, MOBI, audiobooks (M4B), FB2, DOCX, ODT, PPTX, and comic archives (CBZ/CBR). The app offers a rich reading experience with paginated and vertical scroll modes, text-to-speech, ink and text annotations, OPDS catalog browsing, cloud sync via Google Drive and Firestore, AI-powered summarization, and extensive customization (themes, fonts, brightness). The codebase is organized into a shared module containing core business logic, models, and policies, with platform-specific implementations for Android (native Compose, Room, WorkManager), iOS (Swift), and Desktop (Compose Desktop, Swing interop). The architecture follows a clean separation of concerns with expect/actual abstractions for platform services, making it a strong example of production-ready KMP application design.
The LLM identified 5 files worth highlighting for reuse:
Cross-platform JSON manifest codec for cloud folder sync. It encodes and decodes the local file manifest as a byte-compatible JSON format shared between Android and iOS. The codec uses SHA-256 hashing and platform-specific date formatting, but the core logic is pure Kotlin and can be extracted as a standalone library for any app needing a manifest-based sync protocol.
Platform-agnostic PDF zoom/pan camera model with pinch-to-zoom, double-tap zoom, and pan constraints. It manages a multi-resolution tile system (PdfZoomTiles) and provides a clean state machine for viewport updates. This component is self-contained with no internal imports and can be reused in any PDF or image viewer requiring smooth zoom/pan behavior.
Cross-platform EPUB content styler that processes HTML/CSS for paginated reading. It removes paint-only colors for night mode, adapts SVG images, handles MathML rendering requests, and applies theme-aware font scaling. The styler is designed to work with any HTML content and can be reused in other e-reader or rich-text rendering projects.
Serialization of reading annotations (highlights, notes, bookmarks) into a portable JSON format compatible across platforms. It handles CFI locators, color schemes, and metadata. The serializer is self-contained and can be extracted for any application needing to persist or sync rich text annotations.
Centralized controller for library mutations (shelves, tags, collections). It ensures invariants (e.g., shelf name sanitization, max tags) and provides a clean interface for both UI and sync layers. This pattern of a mutation controller with constraint enforcement is reusable across any content management app.