Skip to content

Features

SvelteReader is a nostr-native ebook reader with AI-powered annotations and ecash micropayments.

Core Features

Library Management

Feature Status Description
EPUB Import Import EPUB files from local filesystem
Book Grid Visual library with cover images and progress bars
Reading Progress Track and display reading progress per book
Delete Books Remove books via context menu
Ghost Books Show synced annotations even without EPUB downloaded
SHA-256 Identity Content-addressable books by file hash

Reader

Feature Status Description
Paginated Reading Rendered via epub.js in iframe
Progress Tracking CFI-based position saving
Table of Contents Left sidebar with chapter navigation
Annotations Panel Right sidebar showing highlights and notes
Keyboard Navigation Arrow keys for pages, Escape to close panels
Dark/Light Mode Theme sync via mode-watcher
Text Selection Highlight and annotate selected text
Responsive Resize Handles window resize gracefully

Annotations

Feature Status Description
Create Highlights Select text and choose highlight color
Add Notes Attach notes to highlights
Edit/Delete Modify or remove annotations
Color Options Yellow, green, blue, pink
Composite Keys Annotations keyed by bookSha256:cfiRange
Page/Chapter Display Runtime-computed from CFI

AI Chat

Feature Status Description
Streaming Responses SSE streaming from LangGraph agent
Passage Context AI receives highlighted text, notes, book/chapter info
Thread Management Create, retrieve, delete conversation threads
Markdown Rendering Rich formatting in AI responses
OpenAI-Compatible Works with Ollama, vLLM, LM Studio, etc.
Thread History Sidebar with previous conversations

Authentication & Payments (CypherTap)

Feature Status Description
Nostr Login Authenticate via nostr public key (npub)
Ecash Wallet Client-side Cashu ecash wallet
Pay-per-Message Ecash token attached to each AI request
Refund Safety Client self-redeems on failure
Lightning Deposit Fund wallet via Lightning invoice

Sync (Nostr Protocol)

Feature Status Description
Annotation Publishing 🚧 Publish annotations as kind 30078 events
Book Announcements 🚧 Publish book metadata as kind 30801 events
Multi-Device Sync 🚧 Fetch annotations from relays on login
LWW Conflict Resolution Last Write Wins via created_at
Relay Configuration 🚧 User-configurable relay list

Spectating

Feature Status Description
Browse Others' Libraries Read-only view of another user's books
Spectate History Remember previously viewed users
Relay Customization Specify relays for each spectated user
Visual Indicators Blue tint and badges for spectate mode
Read-Only Enforcement Disable edit actions when spectating

Planned Features

Annotation Enhancements

  • [ ] Search annotations by text/note content
  • [ ] Filter annotations by color, book, date
  • [ ] Export annotations as Markdown/JSON
  • [ ] Bulk operations (delete, export, publish)

Book Discovery

  • [ ] Browse public annotations by book SHA-256
  • [ ] Discover books through shared annotations
  • [ ] Follow other readers' annotations

Reader Improvements

  • [ ] In-book search
  • [ ] Font size / reading theme settings
  • [ ] Multiple file import
  • [ ] Collections / tags
  • [ ] Reading statistics

Social Features

  • [ ] View annotations from followed users
  • [ ] Annotation reactions/replies
  • [ ] Book clubs / shared reading groups

Offline & Multi-Device

  • [ ] Queue sync operations when offline
  • [ ] Sync pending changes on reconnect
  • [ ] Reading position sync via Nostr

Technology Stack

Layer Technology
Frontend Framework SvelteKit 2 + Svelte 5
Styling TailwindCSS 4
UI Components bits-ui, vaul-svelte
EPUB Rendering epub.js
Client Storage IndexedDB (books) + localStorage (state)
Nostr/eCash CypherTap component
Backend FastAPI (Python 3.12+)
AI Agent LangGraph + LangChain
Testing Vitest (unit) + Playwright (E2E)

Legend

  • ✅ Implemented
  • 🚧 Partially implemented / In progress
  • [ ] Planned