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.