A self-hosted CV hosting platform that makes your resume feel like a polished product page β not a PDF attachment. Runs on Cloudflare, deploy under your own domain.
Important
I'm personally strongly against flooding codebases with AI-generated content the author doesn't fully understand β what the community calls "AI slop." That said, I needed this project quickly and built it with heavy AI assistance. I'm being upfront about that.
As a result, my current skill level isn't sufficient to properly review overly complex PRs β they may not get merged. But any issue, bug report, or β star is genuinely appreciated and will be seen. Thank you for understanding.
This project is actively being developed and debugged β not yet in a stable state. Deploy at your own risk.
A static PDF is one-size-fits-all and leaves you blind. CV Site gives you:
- π A real URL that looks professional β
cv.yourdomain.com, served from Cloudflare's global edge - β¨ Animations and rich layouts β themes can use any CSS/JS effect, potentially leaving a stronger impression than a flat document
- ποΈ Full visibility β you know exactly who opened your CV, when, and from where
- π― Control over what each person sees β show different CV versions or languages to different recruiters via magic links
Theme + Data β Asset β Magic Link β Visitor
You create an Asset (theme + your CV data), generate a Magic Link, share it. Change your CV anytime β the link always shows the latest version, no resend needed.
- π Magic Links β per-visitor access with custom CV content, file permissions, optional email whitelist
- π¨ Themes β built-in editorial themes with rich typography and layout; custom theme support in development
- π Multi-language β one theme, multiple language variants (en/zh built-in); language switcher in CV header
- π Proof file requests β visitor submits a request; you get a Telegram alert; Resend delivers the file from your own domain. Whitelist controls who can request
- π Visitor analytics β browser fingerprint aggregation (UA, screen, timezone, CPU, platform), visit history, per-visitor detail, clickable filter
- π¬ Contact messages β visitors can leave messages, stored in admin
- π₯ RxResume import β import rxresu.me JSON directly into the asset editor
- π Alerts β Telegram push (new visitors, file requests) + Resend transactional email
| Layer | Technology |
|---|---|
| Runtime | Cloudflare Workers (SSR) |
| Framework | Astro + TypeScript |
| Database | D1 (SQLite) |
| Files | R2 Object Storage |
| Config | KV Namespace |
| CAPTCHA | Turnstile (optional) |
See Deployment Guide β requires a Cloudflare account (free tier).
The short version:
git clone https://github.com/sealeelike/CV.git
cd CV/cv-site && npm install
npx wrangler login
# create D1 / R2 / KV resources, update wrangler.jsonc
npx wrangler d1 execute cv-site-db --remote --file=schema.sql
npm run build && npx wrangler deployFirst login to /admin/login sets your password.
/admin/assetsβ manage CV assets (theme + data pairs), inline JSON editor, proof files/admin/themesβ Theme Store: browse built-in themes, create assets, upload custom themes/admin/accessβ Magic Links: create links, assign assets, set file permissions, language variants/admin/visitorsβ visitor list with fingerprint details/admin/requestsβ proof file request log/admin/settingsβ Resend, Telegram, Turnstile config
Features planned or in progress:
- π¨ Custom theme upload β package your own theme (CSS + config) and use it as a template
- πΌοΈ Avatar upload β upload a profile photo directly in the asset editor
- π PDF watermarks β per-link custom watermark text (e.g. "For Google HR only")
- π Multi-language email β deliver proof file emails in the visitor's language
- π§ Email template presets β pre-filled Resend email body with placeholders
- ποΈ Record management β delete visitors, requests, and messages; batch delete
- π Visitor notes β add private notes to guest records in the admin panel
- π³ Platform portability β support for more deployment targets beyond Cloudflare (Docker, Vercel, and others)