GitHub - tibi-iorga/echo-reading: AI Reading companion for deep learning

2 min read Original article ↗

An AI reading companion for PDFs.

Read, highlight, annotate, chat with your documents, and capture structured notes. All in one place.

echoreading.com

Echo Landing Page

Features

PDF Reader

  • Full PDF rendering with page navigation, zoom (0.25x to 3x), and fit-to-width
  • Text selection with highlighting and dictionary lookup
  • Reading progress tracking across sessions
  • Keyboard shortcuts for navigation and panel control

Annotations

  • Color-coded highlights with optional notes
  • Free-form notes and page bookmarks
  • Organized, filterable side panel
  • Click any annotation to jump to its page

AI Chat (Bring Your Own Key)

  • Chat about your document using OpenAI or Anthropic models
  • Select text and ask questions about specific passages
  • Save AI insights directly to your annotations
  • Your API key is stored encrypted in the browser and sent only to the provider you choose

Canvas

  • Rich text editor (TipTap) alongside your reading
  • /notes slash command to pull in highlights and annotations
  • Build structured, exportable notes as you read

Export

  • Export annotations and canvas notes as Markdown, PDF, or plain text
  • Preview before exporting with stats summary
  • Includes document metadata (title, author)

Library

  • Upload and manage your PDF collection
  • Auto-generated cover thumbnails from first page
  • Reading progress indicators on book cards
  • Edit book metadata, drag-and-drop upload

More

  • Dark and light theme with system preference detection
  • Dictionary lookup on selected text
  • Account management via Clerk
  • Cloud persistence via Supabase

Screenshots

Library Reading View
Library Reading

Tech Stack

Layer Technology
Frontend React 19, TypeScript, Vite, Tailwind CSS
Auth Clerk
Backend Supabase (PostgreSQL + Storage)
Editor TipTap
PDF react-pdf / pdf.js
AI OpenAI and Anthropic APIs (BYOK)
Hosting Vercel

Getting Started

Prerequisites

  • Node.js 18+

Install and run

cd app
npm install --legacy-peer-deps
npm run dev

The app runs at http://localhost:5173.

Environment variables

Create app/.env.local:

VITE_CLERK_PUBLISHABLE_KEY=your_clerk_publishable_key
VITE_SUPABASE_URL=your_supabase_project_url
VITE_SUPABASE_ANON_KEY=your_supabase_anon_key

Build

Tests

cd app
npm run test:run          # Unit tests
npm run test:e2e          # E2E tests (Playwright)

Documentation

About

A personal project by Tibi Iorga. Built by iterating with AI.

License

MIT. See LICENSE.