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.
翻译准备中
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证正在加载完整 README。 以下为已保存的摘录。
Edit a resume cleanly, then tailor a version for every job — without starting over.
Resumate is a LaTeX-based resume editor. Write once in a clean, ATS-friendly
template, then use AI to tailor a copy for each job posting — rewrite bullets,
shorten sections, and auto-fit to one page — while keeping the underlying
LaTeX source fully editable by hand.查看完整 README ↗Edit a resume cleanly, then tailor a version for every job — without starting over.
Quick start · Features · Architecture · Deploying · Contributing
Resumate is a LaTeX-based resume editor. Write once in a clean, ATS-friendly template, then use AI to tailor a copy for each job posting — rewrite bullets, shorten sections, and auto-fit to one page — while keeping the underlying LaTeX source fully editable by hand.
Fully open source, bring-your-own-everything. Point it at your own Supabase project, your own AI provider (Groq, OpenAI, OpenRouter, or a local model), and your own TeX host. Nothing in this repo depends on the original author's cloud accounts, and no resume data is ever sent anywhere you didn't configure yourself.
This repo ships two independent runtimes that solve the same problem with different privacy trade-offs. Pick one — most contributors only need the Next.js app.
Next.js (web/) — primary | FastAPI (repo root) — legacy/local | |
|---|---|---|
| Storage | Your Supabase project (RLS-scoped rows) | Browser IndexedDB — no server storage, no accounts |
| Auth | Supabase Auth (email) | None needed |
| Best for | Deploying a real, multi-device product | Running fully local, or a minimal self-hosted demo |
| Run it | cd web && npm run dev | python run.py |
Resume templates are defined independently in each runtime — the Next.js app's live in
web/lib/resume-template.ts, FastAPI's inapp/catalog.py+app/seed/*.tex. Editing one does not update the other.
resume-builder/
├── web/ # Next.js app (primary) — editor, auth, AI actions
│ ├── app/ # Routes, server actions, API handlers
│ ├── components/ # UI
│ ├── lib/ # Supabase clients, resume templates, utilities
│ └── packages/ # @resumate/one-page-lock (PDF auto-fit engine)
├── app/ # FastAPI app (legacy/local runtime)
│ ├── routers/ # /api/ai, /api/compile, /api/ats, ...
│ ├── services/ # LaTeX parsing/compile, AI prompting, ATS heuristics
│ └── seed/ # Seed .tex templates
├── supabase/ # SQL migrations for the Next.js app's schema
├── tests/ # pytest suite for the FastAPI runtime
└── templates/ # Server-rendered HTML (FastAPI's own UI)
cd web
cp .env.example .env.local # fill in your Supabase + AI keys
npm install
npm run dev
Apply the SQL in supabase/migrations/ to your Supabase project, then add
your local/deployed URL under Supabase Auth → Redirect URLs. No AI key yet?
Run with NEXT_PUBLIC_USE_MOCK_AI=true for offline UI work.
| Variable | Required | Notes |
|---|---|---|
NEXT_PUBLIC_SUPABASE_URL | yes | Your Supabase project URL |
NEXT_PUBLIC_SUPABASE_ANON_KEY | yes | Publishable anon key (RLS-backed) |
NEXT_PUBLIC_SITE_URL | yes (auth) | Stable public origin for redirects |
SUPABASE_SERVICE_ROLE_KEY | recommended | Server-only; never NEXT_PUBLIC_ |
GROQ_API_KEY (or OPENAI_API_KEY / AI_API_KEY) | yes (live AI) | Server-only |
UPSTASH_REDIS_REST_URL / _TOKEN | recommended | Daily AI quota |
LATEX_COMPILE_URL | yes for PDF | Your TeX compile host |
NEXT_PUBLIC_USE_MOCK_AI | set false for prod | true = offline synthetic AI |
| Data | Where it goes |
|---|---|
| Resume LaTeX / title | Your Supabase resumes table (owner-only RLS) |
| Auth email | Your Supabase Auth |
| Vibe-edit prompt + resume text | Your configured AI provider |
| PDF compile | Your LATEX_COMPILE_URL TeX host (required in prod) |
| AI token counters | Your Upstash Redis (userId + daily count only) |
Production refuses latexonline.cc by default so resume PII is never sent to
a public third-party compiler — set LATEX_COMPILE_URL to a host you control.
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
cp .env.example .env # add your AI API key
python run.py
Open http://127.0.0.1:8000. Requires pdflatex for
PDF preview. Resume title, LaTeX, and version history live entirely in your
browser's IndexedDB; the server is stateless and ephemeral, used only for
AI calls and PDF compilation.
export RESUMATE_PUBLIC=1
export RESUMATE_HOST=0.0.0.0
export RESUMATE_PORT=8000
export RESUMATE_RELOAD=0
export GROQ_API_KEY=... # or OPENAI_API_KEY / AI_API_KEY
python run.py
Both runtimes call any OpenAI-compatible POST /v1/chat/completions endpoint
in JSON mode — Groq, OpenAI, OpenRouter, or a local Ollama/LM Studio shim all
work.
| Variable | Role |
|---|---|
GROQ_API_KEY or OPENAI_API_KEY or AI_API_KEY | Server-only API key |
GROQ_BASE_URL / OPENAI_BASE_URL / AI_BASE_URL | Optional base URL (default: Groq) |
RESUMATE_MODEL | Model id for that provider |
The Next.js app lives in web/, not the repo root.
web, framework Next.js.ALLOW_LATEX_ONLINE=1 in production unless you accept
sending resume PII to latexonline.cc.ruff check .
pytest -q
cd web && npm run typecheck && npm run lint && npm run test:e2e
Issues and PRs welcome — see CONTRIBUTING.md for local setup and the pre-PR checklist. Please read SECURITY.md before reporting a vulnerability.
MIT © Resumate contributors