Create stunning resumes in minutes β drag, drop, and let AI do the writing.
Features β’ Stack β’ Quick Start β’ Architecture β’ API β’ Pricing
Building a resume shouldn't be painful. Beautiful CV combines a smooth drag-and-drop editor with AI-powered content generation β so you focus on what matters, and we handle the formatting, wording, and design.
π― Drag elements freely β’ π€ AI writes your summaries & skills β’ π¨ 8+ templates to choose from β’ π PDF export for just Β₯1
|
Reposition any CV element β name, summary, experience, skills β by simply dragging. No grids, no snapping. Built with |
Stuck on how to describe yourself? Let DeepSeek AI write professional summaries, skill lists, and experience descriptions tailored to your job title. 50 generations per day, free. |
|
Browse 8 professionally-designed templates β from Tech Startup to Executive Pro, Chinese-English Bilingual to Creative Portfolio. Free and premium options. |
Export your CV as a polished PDF with a single click. Client-side rendering via |
|
Pay via WeChat or Alipay QR code through Xorpay β no Stripe, no business license needed. Manual admin verification as fallback. |
JWT authentication with refresh tokens. Passwords hashed with bcrypt. Rate limiting on AI endpoints. Your data stays yours. |
|
Dedicated bilingual template for Chinese job seekers applying to international companies. Full Chinese + English layout support. |
Works beautifully on desktop, tablet, and mobile. Tailwind CSS ensures a consistent experience across all screen sizes. |
graph LR
subgraph Frontend
React[React 18] --> Vite[Vite 5]
React --> Tailwind[Tailwind CSS]
React --> DnD["dnd-kit"]
React --> HTML2PDF[html2pdf.js]
React --> Zustand[Zustand]
end
subgraph Backend
Express[Express 4] --> JWT[JWT Auth]
Express --> RateLimit[Rate Limiting]
Express --> Helmet[Helmet]
end
subgraph Services
PG[(PostgreSQL)]
DeepSeek[DeepSeek AI]
Xorpay[Xorpay Payments]
end
Frontend -- Axios --> Backend
Backend -- pg --> PG
Backend -- API --> DeepSeek
Backend -- API --> Xorpay
| Layer | Technology | Why |
|---|---|---|
| Frontend | React 18 + TypeScript + Vite | Fast dev, type safety, modern DX |
| Styling | Tailwind CSS | Utility-first, rapid UI development |
| Drag & Drop | @dnd-kit | Modern, accessible, performant |
| State | Zustand + React Context | Lightweight global + auth state |
| Backend | Express 4 + TypeScript | Mature, flexible, well-typed |
| Database | PostgreSQL 12+ | Reliable, ACID, great ecosystem |
| AI | DeepSeek (deepseek-chat) |
OpenAI-compatible, cost-effective for Chinese content |
| Payments | Xorpay / PayJS | Personal-friendly, WeChat + Alipay QR |
| html2pdf.js (client-side) | No server overhead, instant output |
- Node.js β₯18 β’ npm β₯9 β’ PostgreSQL β₯12
git clone https://github.com/AzarAI-TOP/Beautiful_CV.git
cd Beautiful_CV
# Run the automated setup script
bash setup.shOr manually:
# Install dependencies
cd backend && npm install && cd ..
cd frontend && npm install && cd ..
# Configure environment
cp .env.example backend/.env
# Edit backend/.env with your database credentialscreatedb beautiful_cv
# The schema auto-initializes when the backend starts# Terminal 1 β Backend (port 5000)
cd backend && npm run dev
# Terminal 2 β Frontend (port 3000)
cd frontend && npm run devVisit http://localhost:3000 and start building your CV! π
cd backend && npm run db:seedAdd your DeepSeek API key to backend/.env:
DEEPSEEK_API_KEY=sk-your-key-hereGet one at platform.deepseek.com β ~$0.28 per million tokens.
Beautiful_CV/
βββ backend/ # Express API (port 5000)
β βββ src/
β β βββ api/ # Route handlers (6 modules)
β β β βββ auth.ts # Signup, login, token refresh
β β β βββ cv.ts # CV CRUD operations
β β β βββ templates.ts # Template listing
β β β βββ ai.ts # DeepSeek content generation
β β β βββ payments.ts # Payment orders & webhooks
β β β βββ export.ts # PDF generation
β β βββ models/ # Database query modules
β β βββ middleware/ # Auth, error handling, rate limiting
β β βββ services/ # DeepSeek, PayJS, Xorpay logic
β β βββ config/ # DB pool, schema auto-init
β β βββ server.ts # Express entry point
β βββ package.json
βββ frontend/ # React SPA (port 3000)
β βββ src/
β β βββ pages/ # 5 page components
β β βββ components/ # AIAssistant, DragDropCanvas, PDFExport
β β βββ context/ # AuthContext (JWT state)
β β βββ services/ # Axios API layer
β β βββ Router.tsx # React Router config
β βββ package.json
βββ shared/ # Shared TypeScript types
βββ .env.example # Environment template
βββ setup.sh # Automated setup script
βββ README.md # You are here :)
Base URL:
http://localhost:5000/api
| Method | Endpoint | Description |
|---|---|---|
POST |
/api/auth/signup |
Register new user { email, password, name } |
POST |
/api/auth/login |
Login β returns { accessToken, refreshToken } |
POST |
/api/auth/refresh |
Refresh access token |
| Method | Endpoint | Description |
|---|---|---|
GET |
/api/cv |
List user's CVs |
POST |
/api/cv |
Create new CV |
GET |
/api/cv/:id |
Get CV by ID |
PUT |
/api/cv/:id |
Update CV (elements, content) |
DELETE |
/api/cv/:id |
Delete CV |
| Method | Endpoint | Description |
|---|---|---|
GET |
/api/templates |
List all templates (8 built-in) |
| Method | Endpoint | Body |
|---|---|---|
POST |
/api/ai/generate-summary |
{ job_title, skills[], experience? } |
POST |
/api/ai/generate-skills |
{ job_title, experience_level } |
POST |
/api/ai/generate-experience |
{ job_title, company, role } |
| Method | Endpoint | Description |
|---|---|---|
POST |
/api/payments/create-order π |
Create payment order (returns QR link) |
GET |
/api/payments/status/:cvId π |
Check if CV is paid |
POST |
/api/payments/notify |
Payment webhook (Xorpay/PayJS) |
| Method | Endpoint | Description |
|---|---|---|
POST |
/api/export/pdf/:cvId |
Export CV to PDF |
π= RequiresAuthorization: Bearer <token>header
| Item | Cost |
|---|---|
| Create & Edit CV | Free |
| AI Content Generation | Free (50/day) |
| PDF Download | Β₯1 RMB per CV |
| Premium Templates | Β₯9-19 RMB one-time |
| Service | Monthly |
|---|---|
| Vercel (Frontend) | $0 |
| Railway/Render (Backend) | $0β5 |
| PostgreSQL (small DB) | $0β15 |
| DeepSeek API | ~$0.01β0.05/gen |
| Xorpay fees | ~1% per tx |
| Total | ~$10β35/month |
We welcome contributions! Here's how:
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Commit your changes:
git commit -m 'Add amazing feature' - Push to your branch:
git push origin feature/amazing-feature - Open a Pull Request
- Run
npm run type-checkin bothbackend/andfrontend/before committing - Keep API changes backward-compatible
- Write meaningful commit messages
MIT Β© 2026 Beautiful CV
- DeepSeek for affordable, high-quality AI
- @dnd-kit for the incredible drag-and-drop library
- Tailwind CSS for the design system
- All our early users and contributors β€οΈ
Made with β€οΈ for job seekers everywhere
Star β this repo if you find it useful!
