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。 儲存庫 README ↗
正在載入完整 README。
檢視完整 README ↗A website (Bahasa Indonesia first, with an ID/EN switch, casual tone) that introduces Ceritain and its three career buddies (Kira the Cat, Kopi the Owl, Tobi the Dino), plus the tool itself: people sign up, pick a buddy, chat about their work life, and get an ATS-friendly CV they can unlock and download as a PDF. Payment is in test mode for now.
| Address | What it is |
|---|---|
/ | Home: what Ceritain is, 3 steps, buddies, price. |
/why-ats | Why an ATS-friendly CV matters, with sourced statistics. |
/buddies | Meet Kira, Kopi and Tobi in detail. |
/pricing | Pricing and all FAQs. |
/app | The tool. Sign up / log in, pick a buddy, chat, get the CV. |
| File | What it does |
|---|---|
index.html | Home page. |
why-ats.html, buddies.html, pricing.html | The other pages. |
lib/site.css, lib/site.js | Shared look, menu and footer for the other pages. |
app.html | The tool (sign up, chat, CV, payment popup, PDF). |
lib/i18n.js | The language switch. All Bahasa and English words for the site live here and in each page. |
lib/buddies.js | The buddies' drawings, colors and fonts (used by both pages). |
lib/fonts/ | Inter typeface for the CV (SIL Open Font License, free to use), trimmed to the letters a CV needs. |
lib/jspdf.umd.min.js | A free tool that creates the PDF file. |
api/chat.js | Talks to the AI during the chat. |
api/resume.js | Asks the AI to write the final CV. |
api/_buddies.js | Each buddy's personality and way of asking questions. |
api/_auth.js | Checks the visitor is logged in and within their daily limit. |
api/config.js | Tells the app how to reach the login service. |
privasi.html, syarat.html | Privacy Policy and Terms (Bahasa + English). Fill in your name and contact email in lib/i18n.js (OPERATOR, CONTACT). |
api/account.js | Users download all their data or delete their account (UU PDP rights). |
api/cleanup.js | Runs daily: deletes unpaid CVs after 90 days and old usage counts. Needs CRON_SECRET. |
api/cv.js, api/pay.js, api/_db.js | Save each CV in the user's account, and unlock it only after payment (checked on the server). |
api/_shared.js | Shared settings and chat-length limits. |
supabase-setup.sql | Database setup: usage counter and saved CVs (see below). Safe to run again. |
vercel.json | Lets /app work without typing .html. |
CVs are saved in the user's account, so they survive a phone change.
Before payment the browser only gets a scrambled preview. The full CV is sent only after the server marks it paid.
Payment is in test mode (PAYMENT_TEST_MODE, on by default). Set it to off before launch, and connect a real payment provider.
The real AI only answers people who are logged in with a confirmed email.
Each account gets a daily limit: 80 chat messages and 5 CVs by default.
Without accounts set up, the AI stays locked (the site shows a polite message).
Demo mode (no AI key) costs nothing, so it works without logging in.
supabase-setup.sql, and click Run.https://storycv-two.vercel.apphttps://storycv-two.vercel.app/appIn your Vercel project, open Settings → Environment Variables and add:
| Name | Value |
|---|---|
ANTHROPIC_API_KEY | your AI key |
SUPABASE_URL | Supabase Project URL |
SUPABASE_ANON_KEY | Supabase anon / publishable key |
SUPABASE_SERVICE_ROLE_KEY | Supabase service_role / secret key |
Also add CRON_SECRET (any long random text) so the daily cleanup can run.
Optional: DAILY_MESSAGE_LIMIT, DAILY_RESUME_LIMIT (numbers), and STORYCV_MODEL = claude-haiku-4-5-20251001 for the cheaper AI.
Then go to Deployments, click the three dots on the newest one, and choose Redeploy.
startPayment() in app.html with Midtrans or Xendit, and confirm payments on the server before giving the PDF.PRICE_IDR in both index.html and app.html.lib/buddies.js.api/_buddies.js.index.html.api/resume.js.