Skip to content

Commit 8c2f62f

Browse files
authored
📝 docs(readme): lead with AI features + add quire-definition tagline (#75)
Pull the AI story up front instead of burying it under privacy. New 'AI, on your terms' section leads with book scan + grounded insights, framing everything as opt-in and routed through a self-hosted endpoint. Add a definitional tagline that ties the etymology of 'quire' (a gathering of leaves bound into a book) to what Quire unifies: library, reading state, and insights.
1 parent 2683465 commit 8c2f62f

1 file changed

Lines changed: 86 additions & 38 deletions

File tree

README.md

Lines changed: 86 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,13 @@
55
<h1 align="center">Quire</h1>
66

77
<p align="center">
8-
<em>Self-hosted EPUB reader for calibre-web. No telemetry, no cloud, your data.</em>
8+
<strong>quire</strong> <em>&nbsp;/ˈkwaɪər/ &nbsp;n.&nbsp; — a gathering of folded leaves, bound into a book.</em>
9+
</p>
10+
11+
<p align="center">
12+
<em>A privacy-first Android EPUB reader for calibre-web — gathering your library,<br>
13+
your reading state, and opt-in, self-hosted AI into one bound whole.<br>
14+
No telemetry, no cloud, your data.</em>
915
</p>
1016

1117
<p align="center">
@@ -27,9 +33,14 @@
2733
A self-hosted reading stack for people who already run [calibre-web]:
2834

2935
- **Quire** — native Android EPUB reader (Kotlin / Compose / Readium).
30-
- **Quire Server** — small FastAPI service that stores reading progress
31-
(and later bookmarks) in Postgres. The Python package is `quire_server`
32-
and the container image is `ghcr.io/vitofico/quire-server`.
36+
- **Quire Server** — small FastAPI service that stores reading state and
37+
your per-user library mirror in Postgres, and orchestrates the optional
38+
AI features. The Python package is `quire_server` and the container image
39+
is `ghcr.io/vitofico/quire-server`.
40+
- **Optional, private AI** — book insights, catalog previews, a reader
41+
profile, recommendations, and barcode book-scanning — all routed through
42+
an OpenAI-compatible endpoint *you* control. Off by default, opt-in per
43+
user. [Jump to AI ↓](#ai-on-your-terms)
3344

3445
calibre-web stays the source of truth for books. Quire Server is the
3546
source of truth for reading state. Quire reconciles both on the device.
@@ -45,6 +56,77 @@ source of truth for reading state. Quire reconciles both on the device.
4556
[Postgres]
4657
```
4758

59+
## AI, on your terms
60+
61+
Most reading apps that got "smart" did it by shipping your library to
62+
someone else's cloud. Quire does the opposite: the intelligence runs
63+
against an endpoint **you** point it at, it is **off by default**, and
64+
every user **opts in** individually. The admin configures any
65+
OpenAI-compatible endpoint — Ollama, llama.cpp, vLLM, OpenAI,
66+
OpenRouter, … — and if AI isn't enabled and opted into, Quire makes no
67+
AI calls at all.
68+
69+
What that unlocks:
70+
71+
### 📷 Scan a book before you buy it
72+
73+
Point your phone at a physical book's barcode (or type the ISBN) and
74+
Quire tells you, on the spot, whether it belongs on your shelf:
75+
76+
- **Reader-affinity score** — a deterministic 0–100 match score with a
77+
band (very low → very high) and plain-language reasons, computed from
78+
the authors, series, and subjects already in your library. **No LLM,
79+
no AI network call** — instant, private, and works as a snap judgment
80+
in a bookshop.
81+
- **Already-owned detection** — tells you if it's in your library and
82+
where you left off (unread / in progress / finished / abandoned).
83+
- **Cover + one-tap deep dive** — pulls the cover from OpenLibrary and,
84+
if you want more, loads the full AI insight card on demand.
85+
86+
### 📖 Insights that actually say something
87+
88+
Per-book insight cards generated by the LLM and **grounded with real
89+
citations** from Wikipedia and OpenLibrary — not hallucinated blurbs:
90+
91+
- intro · author context · series placement
92+
- themes & **craft notes** (how the book is *made*, not just what it's about)
93+
- **comparative anchors** ("if you liked…")
94+
- a distinctive take · discussion prompts · content advisory · cited sources
95+
96+
Insights show up **on catalog tiles before you download** (tap the info
97+
icon), so you can size up a book before it ever touches your device.
98+
Download it and the cached insight is promoted onto the owned book
99+
instantly. Cards are cached per book and shared across every opted-in
100+
reader on your instance, so you pay for each generation once.
101+
102+
### 🎚️ In your voice, in your language
103+
104+
Set the tone — neutral, enthusiastic, scholarly, or casual — and the
105+
language: 100+ options, or **`auto`** to follow the book's own language.
106+
Don't like a card? Regenerate it with feedback.
107+
108+
### 🧭 A reader profile that recommends
109+
110+
From the books you've finished, Quire builds an AI-written narrative of
111+
your taste (refresh on demand) that powers three flavors of suggestions:
112+
113+
- **In-library** — unfinished books you *already own* that fit your taste.
114+
- **Discovery** — more from authors you've finished, fetched from OpenLibrary.
115+
- **AI-suggested** — books you don't own yet, worth hunting down.
116+
117+
Plus **Library Stats** (finished / in-progress / abandoned counts, top
118+
authors, top themes) and an **abandoned-book** status that quietly drops
119+
DNFs out of your library view until you ask for them.
120+
121+
### 🔧 Built for self-hosters
122+
123+
Per-user daily budgets and quotas, an AI **health endpoint**, and deploy
124+
modes for **sync-only**, **AI-only**, or **full-stack** operation. Bring
125+
your own model; cap your own spend.
126+
127+
> All of the above is opt-in and routed through your endpoint. For setup,
128+
> env vars, and deploy modes see [`server/README.md`](server/README.md).
129+
48130
## Why this exists
49131

50132
The starting point was an OPDS catalog (calibre-web) and a simple need:
@@ -81,40 +163,6 @@ Apache-2.0, calibre-web-only, **no telemetry, ever.**
81163
- Credentials are stored in Android Keystore (hardware-backed where the
82164
device supports it).
83165

84-
## AI features (optional)
85-
86-
Quire optionally calls AI for book insights and library analysis. AI is
87-
**off by default**. The Quire Server admin enables it server-side by
88-
configuring an OpenAI-compatible endpoint (Ollama, llama.cpp, vLLM,
89-
OpenAI, OpenRouter, …); each user then opts in from Quire's settings.
90-
91-
When enabled, Quire Server sends the EPUB metadata (title, author,
92-
publisher, description, subjects) of books a user opens to the
93-
configured AI endpoint, plus deterministic queries to Wikipedia and
94-
OpenLibrary to ground the generated insights with citations. The
95-
generated insight is cached server-side per book and reused across all
96-
of that user's devices and other opted-in users on the same instance.
97-
98-
Surfaces in the app today:
99-
100-
- **Book-detail cards** — summary, author, series, themes, craft notes,
101-
comparative anchors, discussion prompts, content advisory, sources.
102-
- **Catalog detail screen** — previews the same insight cards before
103-
download via an `info` icon on each catalog tile. Once the EPUB is
104-
downloaded the cached catalog insight is promoted onto the canonical
105-
identity so the book-detail screen shows it immediately.
106-
- **Library Stats** — totals, finished / in-progress / abandoned counts,
107-
top authors, top themes, backed by `GET /library/v1/stats`.
108-
- **Library Insights** — a per-user reader profile (narrative, in-library
109-
recommendations, OpenLibrary discovery recommendations, AI-suggested
110-
reads), refreshed on demand from the screen. Backed by
111-
`GET /ai/v1/profile` + `POST /ai/v1/profile/refresh`. A "Delete
112-
profile" action in Settings wipes the cached row.
113-
- **Abandoned book UX** — books you've marked abandoned drop out of
114-
Library by default; a "Show abandoned" toggle reveals them.
115-
116-
For configuration details see [`server/README.md`](server/README.md).
117-
118166
## Install
119167

120168
Install Quire from [F-Droid] or grab the latest APK from [Releases],

0 commit comments

Comments
 (0)