All projects
Mobile Android Self-hosted

ReadBooks

A full-featured Android ebook reader for Project Gutenberg's library. Browse and search tens of thousands of free books, download EPUBs for offline reading, listen with text-to-speech, and track your progress with reading goals and achievements.

KotlinJetpack ComposeClean ArchitectureMVVMHiltRoomRetrofitReadiumCoroutinesPaging 3

ReadBooks is a hobby project built around two ideas: learning modern Android development properly, and having a genuinely usable ebook reader.

It pulls book data from a self-hosted Gutendex instance (with public fallback) and enriches it with author and cover info from OpenLibrary. EPUB rendering is handled by the Readium toolkit, with full text-to-speech support via a mini/full player UI.

Architecture

The project follows Clean Architecture across a multi-module Gradle setup — domain, data, UI, and common are all separate modules. It uses MVVM with StateFlow-backed ViewModels, use cases for business logic, and Hilt for dependency injection throughout.

Backend

User accounts, sync, and ratings are backed by a companion Spring Boot / Kotlin REST API (separate repo), self-hosted with PostgreSQL and JWT auth. The app is fully usable in guest mode without an account.

Screenshots

Login screen
Login screen
Home feed
Home feed
Book details & download
Book details & download
Personal library
Personal library
Discover & search
Discover & search
Profile & reading goals
Profile & reading goals
Reader with controls
Reader with controls
Reader — immersive mode
Reader — immersive mode