A local-first Electron desktop app for AI-powered email management and summarization.
Forked from EmailEssence — a capstone project by Emma Melkumian, Joseph Madigan, Shayan Shahla, and Ritesh Samal.
Digest takes EmailEssence's proven backend — FastAPI, the summarization pipeline, the repository pattern — and re-homes it as a local-first desktop application. No cloud deployment, no remote database. Your email stays on your machine, summarized by your choice of AI provider.
- Secure OAuth 2.0 authentication with Google
- AI-powered email summarization with pluggable providers
- Clean, clutter-free reader view
- Local-first — all data stored on your machine
- Tokens secured via OS keychain (Electron
safeStorage)
Electron App (app/)
├─ Renderer: React 19 + Vite
├─ Preload: typed IPC bridge (contextBridge)
└─ Main Process
├─ IPC handlers
├─ OAuth (Electron-native, loopback redirect)
└─ Sidecar manager → FastAPI backend subprocess
├─ Routers → Services → Repositories
└─ SQLite (aiosqlite)
All renderer-to-backend communication flows through Electron IPC — no direct fetch() calls.
- TypeScript — main process, preload, shared types
- React 19 — renderer UI
- Vite — renderer dev server and build
- tsup — main/preload bundling
- electron-builder — packaging and distribution
- Python 3.12+
- FastAPI — API framework
- SQLite via aiosqlite — local database
- Pluggable AI summarization: local (Ollama, llama.cpp, LM Studio), OpenAI, Google Gemini, OpenRouter
- Node.js (v18 or higher)
- Python (v3.12 or higher)
- UV package manager (for Python dependency management)
Create a .env file in backend/ using .env.example as a template. Then:
Windows:
.\backend\setup.ps1Linux/macOS:
chmod +x backend/setup.sh
./backend/setup.shThe setup scripts install UV, create a virtual environment, and install all dependencies.
cd app
npm install# Start backend (from backend/)
uvicorn main:app --reload
# Start Electron app with hot reload (from app/)
npm run devcd app
npm run package # Outputs to app/release/build/The packaged app bundles the Python backend so end users don't need a separate Python install.
Project documentation lives in digest - docs/ (an Obsidian vault). Key references:
TODO
Digest is a solo continuation of EmailEssence, carrying the full git history of the original capstone project. The fork inherits the backend engine and places it in a local-first, Electron-native context.