---
title: "Describe — 80,000 free books to read via streaming"
description: "Describe, by Dealmood & Solutions LTD (London): nearly 80,000 public-domain books to read via streaming on the web, Android and iOS, with synced reading."
url: https://dealmood-solutions.com/en/products/describe
lang: en
alternates:
  fr: https://dealmood-solutions.com/produits/describe
  de: https://dealmood-solutions.com/de/produkte/describe
  it: https://dealmood-solutions.com/it/prodotti/describe
---

Digital reading · Web · Android · iOS

V1.0Release on September 22, 2027· Autumn 2027

# Describe

Nearly 80,000 free books, streamed to read.

Describe opens up Project Gutenberg's public-domain library: novels, poetry, philosophy and science, in French, English and dozens of other languages. Open a book and read it page by page, with nothing to download, on the web, Android and iOS; your reading picks up where you left off, on all your devices.

[See the app](https://dealmood-solutions.com/en/products/describe#captures) · [See the architecture](https://dealmood-solutions.com/en/products/describe#architecture)

Free · Web, Android and iOS · Synced reading

Real screenshots of the app

The concept

## An entire library, in your pocket

The great public-domain texts are free, but often poorly presented. Describe brings them together in a single polished app that is fast and a pleasure to read.

### A vast catalogue

Nearly 80,000 public-domain works, updated every day from the official Project Gutenberg catalogue.

### Streamed reading

Nothing to download: only the displayed page arrives, and the next one is already preloaded.

### Pick up where you left off

Without an account, your reading stays on the device; with an account, it syncs across the web, Android and iOS.

In pictures

## The app, exactly as it is

The full catalogue

A book's page

The reader

Sepia theme and settings

The table of contents

My library

Search

The home page shelves

- Home
- Search
- Book page
- Reading

## Designed for long reading, without fatigue

Full screen, typography built for long reads, pages that turn in 3D around the spine on mobile: the book stays centre stage while the interface fades away.

- Three moodsLight, sepia or night; text from 14 to 32 pixels, serif (Literata) or sans-serif font.
- Pages that turnOn mobile, the page turns in 3D around the spine, just like a real book.
- Table of contentsEach chapter starts a new page; jump from one chapter to another in a single gesture.
- Keyboard-friendly tooLeft and right arrow keys turn the pages; your position is saved automatically.

Features

## Find, read, and pick up where you left off

Instant search

Multiple words, accent-insensitive, across the whole catalogue.

Languages and themes

Seven reading languages and ten themes (novels, poetry, drama, crime…); the catalogue state stays in the URL, easy to share.

Detailed book pages

Authors, subjects, summary and recent read count, so you can choose before opening.

Books you start are added automatically, with the page where you stopped and your reading statistics.

Optional account

Read without an account; create one to find your library everywhere.

Native apps

Android and iOS share all their code with Kotlin Multiplatform.

3D rotunda

The site's home page is a Three.js library you move through as you scroll.

Fast

Local catalogue, cached pages, next page preloaded.

Technology & architecture

## Under the hood of Describe

A Kotlin (Ktor) API with a hexagonal architecture enforced by the compiler: each layer is a separate Gradle module, and the domain cannot import Ktor, the database or an HTTP client. The API contract is a Kotlin Multiplatform module shared by the server and the Android and iOS apps.

Architecture diagram · Product coreData flow

1. 01
   Apps
   - WebAngular, Tailwind CSS 4, a Three.js library rotunda driven by GSAP
   - Android + iOSKotlin Multiplatform and Compose Multiplatform, all code shared
   - coreKotlin API contract compiled for the server and mobile
2. 02
   Describe API
   Ktor · /api/v1
   - HTTP presentationRoutes, JWT, errors, composition root
   - ApplicationCatalogue, reading, accounts, library, sync
   - DomainModels, ports, pagination, no technical dependencies
3. 03
   Infrastructure
   - PostgreSQL / H2Local catalogue, accounts, libraries, reading progress
   - Project GutenbergDaily CSV (78,000 books in ~25 s) and texts, cached
   - GutendexSummaries and popularity, in the background

### The journey of a page being read

1. 1 · The reader requests /books/{id}/manifest: page count and table of contents.
2. 2 · It loads the displayed page from /books/{id}/pages/{n} and preloads the next one.
3. 3 · On first access, the server downloads the text from Gutenberg just once and keeps it cached on disk.
4. 4 · The text is split into pages of around 2,500 characters; each chapter starts a new page.
5. 5 · The position is saved: on the device for a visitor, on the server for a signed-in account.

### Architecture choices

- Hexagonal, checked by the compilerOne layer per Gradle module: importing Ktor or the database into the domain breaks the build.
- A local catalogueGutendex took 40 to 70 s to respond: the official catalogue is imported and resynced every day, so search is local and instant.
- Paginated streamingOnly the displayed page travels; pages are cached by the browser and the raw text is served in byte ranges.
- Secure by designBCrypt passwords, signed JWT, Gutenberg URLs built from the ID (no SSRF), capped text size.

### Every technology, by family

Backend

- Kotlin 2.4
- Ktor 3.6 (Netty)
- Exposed 1.6
- Flyway 13
- HikariCP 7
- kotlinx.serialization
- Coroutines
- JVM 21

Front-end

- Angular 22
- TypeScript 6
- Tailwind CSS 4.3
- GSAP 3.15 + ScrollTrigger
- Three.js
- Signals
- Zoneless

Mobile

- Kotlin Multiplatform
- Compose Multiplatform 1.12
- Material 3
- Ktor Client
- Coil 3
- Android
- iOS

Data & storage

- PostgreSQL 17
- H2
- Disk cache for texts
- LRU page cache

Payments & third-party services

- Project Gutenberg
- Gutendex
- Apache Commons CSV

Authentication & security

- BCrypt
- JWT (HS256)
- SSRF protection
- CORS

Quality & tooling

- JUnit / kotlin-test
- Ktor test host
- Vitest
- Prettier
- Test pyramid

DevOps & CI/CD

- Docker
- Docker Compose
- Nginx
- Gradle 9

Monitoring

- /api/v1/health
- Docker healthchecks
- Logback

Inventory taken from the product's source code and configuration.

Frequently asked questions

## Everything about Describe

Yes. The books come from Project Gutenberg and are in the public domain; you read them freely, with no subscription.

## A reading app for your readers?

Library, publisher, school or media outlet: Describe shows what our team can do with a catalogue, content streaming and cross-platform apps. Tell us about your project.

[Discuss my project](https://dealmood-solutions.com/en/contact) · [Back to products](https://dealmood-solutions.com/en/products)
