Turn your ChatGPT export into a Wrapped-style story. Drag-and-drop the ChatGPT export zip, the Bun server ingests it into SQLite, and the Vite/React frontend renders slides and charts. Licensed under GPL-3.0. Repo: https://github.com/gitpush-gitpaid/chat-wrapt
- Frontend: Vite + React + Tailwind + shadcn UI + Recharts
- Server: Bun server + SQLite (bun:sqlite) + streaming ingest (unzipper + stream-json)
- AI path (optional): Vercel AI SDK + OpenAI key from server env
Prereqs: Bun installed.
Quick start (from repo root):
bun run wrap:meThis installs root + subproject deps and starts the server and frontend together.
Env (optional, for AI mode):
cp .env.example .env
# place .env at repo root (or .env.local) and set OPENAI_API_KEY to enable AI-generated summaries/slides- In ChatGPT, click your name/avatar (bottom left).

- Open Data controls → Export data, click Export, then download the emailed .zip.

- Drag the .zip into Chat wraPT.
Server:
cd server
bun install
bun run dev # listens on http://localhost:3001Frontend:
cd frontend
bun install
bun dev # http://localhost:5173Uploads: POST to /api/process with file (.zip). Max ~1GB by default (tune via MAX_UPLOAD_MB). Data is stored in server/data/chatwrapt.db (ignored by git).
Licensed under the GNU GPL v3.0. Forks/clones and contributions are welcome under the same license. See LICENSE.
- History of uploads is stored in localStorage for quick access.
- Year filtering is backed by message-year column in SQLite; large exports are streamed during ingest.

