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。 以下為已儲存的摘錄。
Joben Resume is an AI-assisted resume builder SaaS built with Next.js App Router, TypeScript, Supabase, Clerk, Stripe, Resend, Upstash, and Anthropic.
Core Features
• Resume builder with ATS-focused scoring
• AI review and bullet improvement workflows
• Cover letter generation and PDF export
• Subscription upgrades (Stripe)
• Automated welcome and follow-up emails
• Operational observability via health endpoint, webhook idempotency, and email/event tracking
2) Configure environment variables
Create .env.local and define all required values:檢視完整 README ↗Joben Resume is an AI-assisted resume builder SaaS built with Next.js App Router, TypeScript, Supabase, Clerk, Stripe, Resend, Upstash, and Anthropic.
npm install
Create .env.local and define all required values:
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEYCLERK_SECRET_KEYCLERK_WEBHOOK_SECRETNEXT_PUBLIC_SUPABASE_URLNEXT_PUBLIC_SUPABASE_ANON_KEYSUPABASE_SERVICE_ROLE_KEYUPSTASH_REDIS_REST_URLUPSTASH_REDIS_REST_TOKENANTHROPIC_API_KEYSTRIPE_SECRET_KEYSTRIPE_WEBHOOK_SECRETSTRIPE_PRO_PRICE_IDNEXT_PUBLIC_APP_URLRESEND_API_KEYRESEND_FROM_EMAILCRON_SECRETLATEX_SERVICE_URL (optional; defaults to http://localhost:3005/api/compile)npx supabase start
npx supabase db push
Notes:
supabase/migrations/ only.npm run dev
Optional local PDF service (if needed outside Docker compose):
cd latex-service
npm install
npm run dev
npx tsc --noEmit
npm run lint
npm run test
npm run build
e2e/public/** covers unauthenticated flows (marketing pages, legal pages,
sign-up's legal gate, protected-route redirects, wrong-password sign-in) and
needs no extra setup beyond local Supabase running.
e2e/authenticated/** (dashboard, resume CRUD, Stripe checkout) needs a
real signed-in session, which requires test-mode Clerk + Stripe
credentials — see .env.test.local.example. Copy it to .env.test.local
(gitignored) and fill in:
pk_test_/sk_test_ keys (a separate
Clerk app from whatever .env.local points at is safest, but a dev
instance is inherently test-safe)sk_test_ secret key and test price_... id —
never reuse a live Stripe key here, playwright.config.ts refuses to
start if it detects _live_ in any of these three keysE2E_TEST_USER_EMAIL / E2E_TEST_USER_PASSWORD for a throwaway account
e2e/global-setup.ts creates (or reuses) via the Clerk Backend API and
seeds directly into the local users table (no webhook forwarder needed
locally); e2e/global-teardown.ts deletes it again after the run.npm run test:e2e # headless run
npm run test:e2e:ui # interactive UI mode
The Stripe checkout spec only asserts a real Checkout Session URL comes
back — it never completes a purchase. The webhook-driven plan-upgrade
lifecycle is covered separately by tests/api/webhooks-stripe.test.ts.
/api/health200 + status=ok: integrations and DB probe are healthy503 + status=degraded: missing critical integration config or failed DB probe/api/cron/followup-7dAuthorization: Bearer <CRON_SECRET>x-cron-secret: <CRON_SECRET>dryRun=true|falselimit=1..500retries=0..3Examples:
curl -X POST "https://your-domain.com/api/cron/followup-7d?dryRun=true&limit=25" -H "Authorization: Bearer <CRON_SECRET>"
curl -X POST "https://your-domain.com/api/cron/followup-7d?limit=100&retries=1" -H "Authorization: Bearer <CRON_SECRET>"
/api/billing/checkout/api/billing/portal/api/webhooks/stripeSTRIPE_SECRET_KEY (sk_test_... for dev, sk_live_... for prod), STRIPE_PRO_PRICE_ID, STRIPE_WEBHOOK_SECRET.env.prod.example for the full var list and RUNBOOK.md's "Local Stripe Testing" section for stripe listen/stripe trigger usagepublic.webhook_events: idempotency claims for Clerk/Stripe webhook eventspublic.email_events: welcome/followup send outcomes and dedup keys (source_event_id)public.product_events: product funnel instrumentation (resume_created -> ... -> checkout_started)STRIPE_SECRET_KEY and STRIPE_PRO_PRICE_ID are set.NEXT_PUBLIC_APP_URL points to current environment URL.STRIPE_WEBHOOK_SECRET matches webhook endpoint secret.CLERK_WEBHOOK_SECRET is configured.webhook_events.pk_live/sk_live on localhost.pk_test_..., sk_test_...) in .env.localemail_events.status, error, and source_event_id.showUpgrade response.npx supabase db push).npx supabase start).For deployment, incident response, and rollback procedures, see RUNBOOK.md.