TreeMap
A free, open-source disk-space visualizer. Squarified treemap, duplicate hunting, disk-full forecasting, and cleanup that only ever moves files to the Trash.
Everything you've deliberately saved, organized day by day.
Translation pending
ProductivityTypeScript · PythonGitHub @Dhruvgoyal18OnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Loading the full README. The saved excerpt is shown below.
Manually save exactly what you choose — a text selection or a full page — from
Chrome, and browse everything you've saved, organized day by day, from a
dashboard you can reach on any device. Nothing is captured unless you click
"Save." Multi-user: anyone can sign up for their own account and gets a
private, isolated archive.
Full requirements: recall-extension-requirements-v3.md.
Operations, deployment, and incident runbooks: docs/OPERATIONS.md.Read the full README ↗Manually save exactly what you choose — a text selection or a full page — from Chrome, and browse everything you've saved, organized day by day, from a dashboard you can reach on any device. Nothing is captured unless you click "Save." Multi-user: anyone can sign up for their own account and gets a private, isolated archive.
Full requirements: recall-extension-requirements-v3.md.
Operations, deployment, and incident runbooks: docs/OPERATIONS.md.
[Chrome Extension] --HTTPS+JWT--> [Next.js on Vercel] --HTTPS+JWT--> [FastAPI on Railway] --> [Postgres]
extension/ — Manifest V3 extension. Manual capture only (context menu
selection save, popup full-page save, configurable keyboard shortcut), with
a chrome.storage.local-backed retry queue and a sign-in/sign-up UI (email
extension/.backend/ — FastAPI service deployed on Railway (Docker web service,
railway.json config in backend/). Postgres-backed, per-user-scoped
storage, JWT session tokens, password hashing, rate limiting, structured
logs. See backend/README.md.frontend/ — Next.js dashboard on Vercel. Day view, 30-day activity
heatmap, search, delete, email+password sign-in, server-side API proxy so
no backend secret ever reaches the browser. See frontend/README.md.recall/
extension/ Chrome extension (TypeScript, esbuild)
backend/ FastAPI backend (Python), deployed on Railway
frontend/ Next.js dashboard (TypeScript), deployed on Vercel
.github/workflows/ CI: extension build/lint/typecheck/test/package,
backend pytest, frontend lint/build/Playwright
| Workflow | Triggers on | Does |
|---|---|---|
extension-build.yml | changes under extension/ | typecheck, lint, unit tests, build, packages a versioned .zip artifact |
backend-test.yml | changes under backend/ | pytest, Docker build smoke test |
frontend-test.yml | changes under frontend/ or backend/ | lint, build, spins up the backend locally (SQLite) and runs Playwright against it |
Vercel auto-deploys previews per PR and promotes to production on merge to
main. Railway also auto-deploys the backend on push to main (the GitHub
App's repo access had silently dropped recall from its allowed
repositories, which is what caused the "Auto deploy unavailable — could not
load branches" state under Settings → Source; re-adding the repo at
github.com/settings/installations restored it). If auto-deploy ever shows
that error again, check the Railway App's repository access on GitHub first
before assuming the connection itself needs to be redone.
Each of Railway (DATABASE_URL, JWT_SECRET) and Vercel (BACKEND_URL) has
its own env vars — no secret is shared between them or with the extension,
since auth is now per-user (issued at signup/login), not a fixed shared
token. See backend/README.md and frontend/README.md for exactly which
variables go where.
Run all three independently:
# backend (needs a local Postgres, or point DATABASE_URL at sqlite+aiosqlite for quick testing)
cd backend && pip install -r requirements-dev.txt
DATABASE_URL=postgresql+asyncpg://localhost/recall JWT_SECRET=dev-secret uvicorn app.main:app --reload --port 8000
alembic upgrade head
# frontend (separate terminal)
cd frontend && npm install
cp .env.example .env.local # point BACKEND_URL at localhost:8000
npm run dev
# extension (separate terminal)
cd extension && npm install
npm run build # then chrome://extensions -> Load unpacked -> extension/dist