Lettura digitaleWeb · Android · iOSV1.0In uscita il · Autunno 2027

Describe

Quasi 80.000 libri gratuiti, da leggere in streaming.

Describe apre la biblioteca di pubblico dominio del Project Gutenberg: romanzi, poesia, filosofia, scienze, in francese, in inglese e in decine di altre lingue. Si apre un libro e lo si legge pagina dopo pagina, senza scaricare nulla, sul web, su Android e su iOS; la lettura riprende dal punto in cui la si è lasciata, su tutti i propri dispositivi.

GratuitoWeb, Android e iOSLettura sincronizzata
Describe su computer: la home page e la sua biblioteca
Describe su mobile: una pagina in lettura
Screenshot reali dell'app

Il concetto

Un'intera biblioteca, in tasca

I grandi testi di pubblico dominio sono liberi, ma spesso presentati male. Describe li riunisce in un'unica app curata, veloce e piacevole da leggere.

Un catalogo immenso

Quasi 80.000 opere di pubblico dominio, aggiornate ogni giorno dal catalogo ufficiale del Project Gutenberg.

Lettura in streaming

Niente da scaricare: arriva solo la pagina visualizzata, la successiva è già precaricata.

Si riprende da dove ci si è fermati

Senza account, la lettura resta sul dispositivo; con un account, si sincronizza tra web, Android e iOS.

In immagini

L'app, così com'è

Il catalogo: 78.423 libri, ricerca, filtro per lingua e temi
Il catalogo completo
La scheda di Candide, di Voltaire: riassunto, argomenti, «Leggi gratis» e «La mia biblioteca»
La scheda di un libro
Il lettore a schermo intero: Candide, capitolo II, pagina 9 di 104
Il lettore
Il lettore con tema seppia e le relative impostazioni: dimensione del testo, temi, carattere
Tema seppia e impostazioni
L'indice aperto, con il capitolo in corso evidenziato
L'indice
La mia biblioteca: statistiche di lettura e letture in corso con il relativo avanzamento
La mia biblioteca
Risultati di ricerca per «victor hugo», filtrati in francese
La ricerca
Gli scaffali della home: classici francesi e grandi testi in inglese
Gli scaffali della home
  • La home di Describe su mobile
    Home
  • Risultati di ricerca su mobile, su due colonne
    Ricerca
  • La scheda di Candide su mobile
    Scheda libro
  • Il lettore su mobile, pagina 9 di 104
    Lettura

Il lettore

Pensato per leggere a lungo, senza affaticarsi

Schermo intero, tipografia per la lettura prolungata, pagine che girano in 3D attorno alla rilegatura su mobile: il libro resta al centro, l'interfaccia si fa da parte.

  • Tre atmosfereChiaro, seppia o notte; testo da 14 a 32 pixel, carattere con grazie (Literata) o senza.
  • Pagine che giranoSu mobile, la pagina gira in 3D attorno alla rilegatura, come in un vero libro.
  • IndiceOgni capitolo inizia una nuova pagina; si passa da un capitolo all'altro con un gesto.
  • Anche da tastieraFrecce sinistra e destra per girare le pagine; la posizione viene salvata automaticamente.

Funzionalità

Trovare, leggere e riprendere da dove ci si era fermati

Ricerca istantanea

Più parole, senza preoccuparsi degli accenti, su tutto il catalogo.

Lingue e temi

Sette lingue di lettura e dieci temi (romanzi, poesia, teatro, gialli…); lo stato del catalogo resta nell'indirizzo, facile da condividere.

Schede dettagliate

Autori, argomenti, riassunto e numero di letture recenti, per scegliere prima di aprire.

La mia biblioteca

I libri iniziati vi entrano da soli, con la pagina in cui ci si è fermati e le relative statistiche di lettura.

Account facoltativo

Si legge senza account; se ne crea uno per ritrovare la propria biblioteca ovunque.

App native

Android e iOS condividono tutto il codice grazie a Kotlin Multiplatform.

Rotonda in 3D

La home del sito è una biblioteca in Three.js che si attraversa scorrendo la pagina.

Veloce

Catalogo locale, pagine in cache, precaricamento della pagina successiva.

Tecnologie e architettura

Sotto il cofano di Describe

Un'API Kotlin (Ktor) con architettura esagonale garantita dal compilatore: ogni livello è un modulo Gradle distinto e il dominio non può importare né Ktor, né il database, né un client HTTP. Il contratto dell'API è un modulo Kotlin Multiplatform condiviso dal server e dalle app Android e iOS.

Schema dell'architetturaCuore del prodottoFlusso di dati
  1. 01

    Applicazioni

    • WebAngular, Tailwind CSS 4, rotonda-biblioteca in Three.js animata da GSAP
    • Android + iOSKotlin Multiplatform e Compose Multiplatform, tutto il codice condiviso
    • coreContratto dell'API in Kotlin, compilato per il server e il mobile
  2. 02

    API Describe

    Ktor · /api/v1

    • Presentazione HTTPRoute, JWT, errori, composition root
    • ApplicazioneCatalogo, lettura, account, biblioteca, sincronizzazione
    • DominioModelli, porte, suddivisione in pagine, senza dipendenze tecniche
  3. 03

    Infrastruttura

    • PostgreSQL / H2Catalogo locale, account, biblioteche, ripresa della lettura
    • Project GutenbergCSV giornaliero (78.000 libri in ~25 s) e testi, messi in cache
    • GutendexRiassunti e popolarità, in background

Il percorso di una pagina letta

  1. 1Il lettore richiede /books/{id}/manifest: numero di pagine e indice.
  2. 2Carica la pagina visualizzata tramite /books/{id}/pages/{n} e precarica la successiva.
  3. 3Al primo accesso, il server scarica il testo da Gutenberg una sola volta e lo conserva nella cache su disco.
  4. 4Il testo viene suddiviso in pagine di circa 2.500 caratteri; ogni capitolo inizia una nuova pagina.
  5. 5La posizione viene salvata: sul dispositivo per un visitatore, sul server per un account connesso.

Le scelte di architettura

  • Esagonale, verificata dal compilatoreUn livello per modulo Gradle: importare Ktor o il database nel dominio fa fallire la build.
  • Un catalogo localeGutendex rispondeva in 40-70 s: il catalogo ufficiale viene importato e risincronizzato ogni giorno, la ricerca è locale e istantanea.
  • Streaming paginatoViaggia solo la pagina visualizzata; le pagine vengono messe in cache dal browser, il testo grezzo è servito per intervalli di byte.
  • Sicurezza by designPassword BCrypt, JWT firmato, indirizzi Gutenberg costruiti a partire dall'identificativo (niente SSRF), dimensione dei testi limitata.

Tutte le tecnologie, per famiglia

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

Dati e archiviazione

  • PostgreSQL 17
  • H2
  • Cache su disco dei testi
  • Cache LRU delle pagine

Pagamenti e servizi di terzi

  • Project Gutenberg
  • Gutendex
  • Apache Commons CSV

Autenticazione e sicurezza

  • BCrypt
  • JWT (HS256)
  • Protezione SSRF
  • CORS

Qualità e strumenti

  • JUnit / kotlin-test
  • Ktor test host
  • Vitest
  • Prettier
  • Piramide dei test

DevOps e CI/CD

  • Docker
  • Docker Compose
  • Nginx
  • Gradle 9

Monitoraggio

  • /api/v1/health
  • Docker healthchecks
  • Logback

Inventario ricavato dal codice sorgente e dalla configurazione del prodotto.

Domande frequenti

Tutto su Describe

Sì. I libri provengono dal Project Gutenberg e sono di pubblico dominio; si leggono liberamente, senza abbonamento.

Un'app di lettura per i Suoi lettori?

Biblioteca, casa editrice, scuola o media: Describe mostra ciò che il nostro team sa fare con un catalogo, lo streaming di contenuti e le app multipiattaforma. Ci parli del Suo progetto.