An AI-powered tool that converts books (PDF, EPUB, or plain text) into structured summaries, and interactive chat.
The goal is to help busy readers extract core ideas of a book quickly, without needing to read it cover to cover.
- Multi-format input (PDF, EPUB, plain text)
- Structured summary (core thesis, key insights, actionable takeaways, who it’s for)
- Chapter-by-chapter summaries
- Chat with the book content
- Export summaries to PDF
- Caching to avoid re-processing identical content
- Language: Python 3.12
- Framework: FastAPI
- ORM: SQLAlchemy
- Database: SQLite (default), configurable to PostgreSQL
- Vector Store: ChromaDB (for RAG)
- Framework: Next.js 16 (App Router)
- UI: React 19 + TypeScript + Tailwind CSS
- Auth: Better Auth
- LLM: OpenRouter API (Gemini 3 Flash)
- Embeddings: OpenAI embeddings (for RAG)
- RAG: LlamaIndex
- Python 3.12+
- Node.js 24+
uvPython package manager
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
uv pip install -r requirements.txt
cp .env.example .env
# Edit .env with your API keys and settingscd client
npm install
cp .env.local.example .env.local
# Edit environment variablesBetter Auth requires a Postgres database:
- Create a Postgres instance (e.g. via Neon)
- Set
DATABASE_URLinclient/.env.local - Run migrations:
npx drizzle-kit push# Backend
uvicorn api:app --reload --host 0.0.0.0 --port 8000
# Frontend
cd client
npm run devOpen: http://localhost:3000
POST /api/summarize– Upload a book or text and generate a summaryGET /api/summary/{id}– Retrieve a summaryGET /api/summary/{id}/pdf– Download summary as PDFPOST /api/summary/{id}/save– Save summary to user libraryGET /api/library– List saved summariesPOST /api/chat– Chat with a summarized book (RAG)
OPENROUTER_API_KEY=your_openrouter_key
OPENAI_API_KEY=your_openai_key
LLM_MODEL=google/gemini-3-flash-preview
DATABASE_URL=sqlite:///data/app.db
BETTER_AUTH_URL=http://localhost:3000
LOG_LEVEL=INFONEXT_PUBLIC_API_URL=http://localhost:8000├── api.py # FastAPI entrypoint
├── core/ # Core business logic
│ ├── config.py
│ ├── extractor.py # PDF / EPUB text extraction
│ ├── summarizer.py # LLM summarization logic
│ ├── auth.py # Auth helpers
│ └── pdf_export.py # PDF generation
├── db/
│ ├── models/ # SQLAlchemy models
│ └── repositories/ # Data access layer
├── routers/ # API route definitions
├── rag/ # RAG pipeline
├── client/ # Next.js frontend
│ ├── app/
│ ├── components/
│ └── lib/
├── requirements.txt
└── data/ # SQLite DB + Chroma vectors
Contributions are welcome! Please open an issue or submit a pull request.
MIT