[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-74989":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":14,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":16,"stars7d":17,"stars30d":18,"stars90d":15,"forks30d":15,"starsTrendScore":19,"compositeScore":20,"rankGlobal":10,"rankLanguage":10,"license":21,"archived":22,"fork":22,"defaultBranch":23,"hasWiki":24,"hasPages":22,"topics":25,"createdAt":10,"pushedAt":10,"updatedAt":33,"readmeContent":34,"aiSummary":35,"trendingCount":15,"starSnapshotCount":15,"syncStatus":36,"lastSyncTime":37,"discoverSource":38},74989,"JadeAI","LingyiChen-AI\u002FJadeAI","LingyiChen-AI","AI-Powered Smart Resume Builder — 50+ professional templates, PDF\u002Fimage parsing, AI optimization, JD match analysis, multi-format export. Open source & free, one-click Docker deployment.","https:\u002F\u002Fjadeai.cturing.cn\u002Fen",null,"TypeScript",1749,186,3,0,27,59,469,81,19.82,"Apache License 2.0",false,"main",true,[26,27,28,29,30,31,32],"ai","ai-writing","awesome-ai-tools","awesome-cv","awesome-resumes","resume","resume-builder","2026-06-12 02:03:31","\u003Cdiv align=\"center\">\n\n# JadeAI\n\n**AI-Powered Smart Resume Builder**\n\nBuild professional resumes with drag-and-drop editing, real-time AI optimization, 50 templates, and multi-format export.\n\n[![License](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-Apache%202.0-blue.svg)](LICENSE)\n[![Next.js](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FNext.js-16-black)](https:\u002F\u002Fnextjs.org\u002F)\n[![React](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FReact-19-61dafb)](https:\u002F\u002Freact.dev\u002F)\n[![TypeScript](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FTypeScript-5-3178c6)](https:\u002F\u002Fwww.typescriptlang.org\u002F)\n[![Docker](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FDocker-Ready-2496ed)](https:\u002F\u002Fhub.docker.com\u002Fr\u002Ftwwch\u002Fjadeai)\n\n[中文文档](.\u002FREADME.zh-CN.md)\n\n\u003C\u002Fdiv>\n\n---\n\n## Community\n\nJoin our groups for discussion and support:\n\n[![Linux.do](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLinux.do-Community-blue)](https:\u002F\u002Flinux.do\u002F)\n\n\n## Recent Updates\n\n### v0.3.4 · Brand Color System & Theme Switching\n- Introduced semantic `--brand-*` CSS tokens; replaced hardcoded `pink-*` across 60+ files\n- New brand switcher in the user menu with three presets: **Mint** (default), **Blue**, **Pink**\n- SSR-safe anti-flicker hydration; legacy values auto-migrated via `localStorage`\n- Added a Mint resume preset to the theme editor\n- Export pipelines (PDF \u002F HTML \u002F DOCX) now read from `src\u002Flib\u002Fbrand-constants.ts`\n\n### v0.3.3 · Mobile Experience & Interview Report Stability\n- Mobile-friendly template preview and bottom action bars for preview\u002Fshare pages\n- Fixed mobile scroll: canvas\u002Fpreview roots use `h-full` instead of `flex-1`\n- Improved stability of interview report generation\n\n### v0.3.2 · Runtime Environment Variables\n- Removed all `NEXT_PUBLIC_*` build-time variables in favor of runtime env\n\n### v0.3.1 · Auth Runtime Flag\n- Changed `NEXT_PUBLIC_AUTH_ENABLED` to runtime `AUTH_ENABLED`\n\n## Screenshots\n\n| Template Gallery | Resume Editor |\n|:---:|:---:|\n| ![Template Gallery](images\u002Ftemplate-list.png) | ![Resume Editor](images\u002Fresume-edit.png) |\n\n| AI Resume Generation | AI Resume Parsing (Image) |\n|:---:|:---:|\n| ![AI Resume Generation](images\u002FAI%20填充简历.gif) | ![AI Resume Parsing](images\u002F图片简历解析.gif) |\n\n| AI Optimization | Grammar Check |\n|:---:|:---:|\n| ![AI Optimization](images\u002Fai%20优化.png) | ![Grammar Check](images\u002FAI%20语法检查.png) |\n\n| Grammar Auto-Fix | JD Match Analysis |\n|:---:|:---:|\n| ![Grammar Auto-Fix](images\u002FAI%20语法检查一键修复.png) | ![JD Match Analysis](images\u002FJD%20匹配分析.png) |\n\n| Multi-Format Export | Share Link |\n|:---:|:---:|\n| ![Multi-Format Export](images\u002F多项导出.png) | ![Share Link](images\u002F创建分享链接.png) |\n\n| Shared Resume Page | AI Professional Photo |\n|:---:|:---:|\n| ![Shared Resume Page](images\u002F简历分享页.png) | ![AI Professional Photo](images\u002F职业照生成.png) |\n\n| QR Code Section |\n|:---:|\n| ![QR Code Section](images\u002F二维码.png) |\n\n| Interview Setup | Mock Interview |\n|:---:|:---:|\n| ![Interview Setup](images\u002F新建面试.png) | ![Mock Interview](images\u002F模拟面试.png) |\n\n| Interview List | Interview Report |\n|:---:|:---:|\n| ![Interview List](images\u002F面试列表.png) | ![Interview Report](images\u002F面试报告.png) |\n\n## Deployment Video\n\nWatch the full deployment walkthrough on Bilibili:\n\n[![Deployment Video](https:\u002F\u002Fi0.hdslb.com\u002Fbfs\u002Farchive\u002Fdeployment-preview.jpg)](https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1h7wQzSEYe\u002F)\n\n> [Watch on Bilibili →](https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1h7wQzSEYe\u002F)\n\n## Features\n\n### Resume Editing\n\n- **Drag & Drop Editor** — Visually arrange and reorder resume sections and items\n- **Inline Editing** — Click any field to edit directly on the canvas\n- **50 Professional Templates** — Classic, Modern, Minimal, Creative, ATS-Friendly, Timeline, Nordic, Swiss, and more\n- **Theme Customization** — Colors, fonts, spacing, and margins with live preview\n- **Undo \u002F Redo** — Full edit history (up to 50 steps)\n- **Auto Save** — Configurable interval (0.3s–5s), with manual save option\n- **Markdown Support** — Use Markdown syntax in text fields to format content (e.g., `**bold**` for **bold text**)\n\n### Markdown Formatting\n\nThe following resume sections support Markdown syntax:\n\n| Section | Supported Fields |\n|---------|-----------------|\n| Summary | Content text |\n| Work Experience | Description, Highlights |\n| Education | Highlights |\n| Projects | Description, Highlights |\n| Custom Section | Description |\n| Languages | Description |\n| GitHub | Description |\n\n**Supported syntax:**\n\n```\n**bold text**    → bold\n`code text`      → inline code\n- item           → bullet list\n```\n\n> Skills, Certifications, and Personal Info fields do not support Markdown.\n\n### AI Capabilities\n\n- **AI Chat Assistant** — Conversational AI integrated in the editor, with multi-session support and persistent history\n- **AI Resume Generation** — Generate a complete resume from job title, experience, and skills\n- **Resume Parsing** — Upload an existing PDF or image, AI extracts all content automatically\n- **JD Match Analysis** — Compare resume against a job description: keyword matching, ATS score, and improvement suggestions\n- **Cover Letter Generation** — AI-tailored cover letter based on resume and JD, with tone selection (formal \u002F friendly \u002F confident)\n- **Grammar & Writing Check** — Detect weak verbs, vague descriptions, and grammar issues; returns a quality score\n- **Translation** — Translate resume content across 10 languages while preserving technical terms\n- **Flexible AI Provider** — Supports OpenAI, Anthropic, and custom API endpoints; each user configures their own key in-app\n\n### Mock Interview\n\n- **JD-Based Interview Simulation** — Paste a job description, AI plays different interviewer roles in sequence\n- **6 Preset Interviewers** — HR, Technical, Scenario, Behavioral, Project Deep Dive, Leader — each with unique personality and questioning style\n- **Custom Interviewers** — Create your own interviewer with custom focus areas and style\n- **Smart Follow-ups** — AI adapts questions based on answer quality, probing deeper when needed\n- **Interview Controls** — Skip questions, request hints, mark for review, pause\u002Fresume\n- **Detailed Report** — Per-question scoring, competency radar chart, improvement plan with resources\n- **History Comparison** — Track score trends and dimension progress across interviews\n- **PDF & Markdown Export** — Export interview reports for offline review\n\n### Export & Sharing\n\n- **Multi-Format Export** — PDF (Puppeteer + Chromium), Smart One-Page PDF (auto-fit to single page), DOCX, HTML, TXT, JSON\n- **JSON Import** — Import a previously exported JSON file to restore or create a resume; supported both in the editor (overwrite current) and on the dashboard (create new)\n- **Link Sharing** — Token-based shareable links with optional password protection\n- **View Counter** — Track how many times a shared resume has been viewed\n\n### Management\n\n- **Multi-Resume Dashboard** — Grid and list views, search, sort (by date, name)\n- **Import from JSON** — Create a new resume from a JSON export directly on the dashboard\n- **Duplicate & Rename** — Quick resume management actions\n- **Interactive Tours** — Step-by-step onboarding for first-time users\n\n### Other\n\n- **Bilingual UI** — Full Chinese (zh) and English (en) interface\n- **Dark Mode** — Light, dark, and system theme support\n- **Flexible Auth** — Google OAuth or browser fingerprint (zero-config)\n- **Dual Database** — SQLite (default, zero-config) or PostgreSQL\n\n## Tech Stack\n\n| Layer | Technology |\n|-------|-----------|\n| Framework | Next.js 16 (App Router, Turbopack) |\n| UI | React 19, Tailwind CSS 4, shadcn\u002Fui, Radix UI |\n| Drag & Drop | @dnd-kit |\n| State | Zustand |\n| Database | Drizzle ORM (SQLite \u002F PostgreSQL) |\n| Auth | NextAuth.js v5 + FingerprintJS |\n| AI | Vercel AI SDK v6 + OpenAI \u002F Anthropic |\n| PDF | Puppeteer Core + @sparticuz\u002Fchromium |\n| i18n | next-intl |\n| Validation | Zod v4 |\n\n## Getting Started\n\n### Docker (Recommended)\n\n```bash\n# Generate a secret key first\nopenssl rand -base64 32\n\ndocker run -d -p 3000:3000 \\\n  -e AUTH_SECRET=\u003Cyour-generated-secret> \\\n  -v jadeai-data:\u002Fapp\u002Fdata \\\n  twwch\u002Fjadeai:latest\n```\n\nOpen [http:\u002F\u002Flocalhost:3000](http:\u002F\u002Flocalhost:3000). Database auto-migrates and seeds on first start.\n\n> **`AUTH_SECRET`** is required for session encryption. Generate one with `openssl rand -base64 32`.\n\n> **AI Configuration:** No server-side AI env vars needed. Each user configures their own API Key, Base URL, and Model in **Settings > AI** within the app.\n\n\u003Cdetails>\n\u003Csummary>With PostgreSQL\u003C\u002Fsummary>\n\n```bash\ndocker run -d -p 3000:3000 \\\n  -e AUTH_SECRET=\u003Cyour-generated-secret> \\\n  -e DB_TYPE=postgresql \\\n  -e DATABASE_URL=postgresql:\u002F\u002Fuser:pass@host:5432\u002Fjadeai \\\n  twwch\u002Fjadeai:latest\n```\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>With Google OAuth\u003C\u002Fsummary>\n\n```bash\ndocker run -d -p 3000:3000 \\\n  -e AUTH_ENABLED=true \\\n  -e AUTH_SECRET=your-secret \\\n  -e GOOGLE_CLIENT_ID=xxx \\\n  -e GOOGLE_CLIENT_SECRET=xxx \\\n  -v jadeai-data:\u002Fapp\u002Fdata \\\n  twwch\u002Fjadeai:latest\n```\n\n\u003C\u002Fdetails>\n\n### Local Development\n\n#### Prerequisites\n\n- Node.js 18+\n- pnpm 9+\n\n#### Installation\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Ftwwch\u002FJadeAI.git\ncd JadeAI\n\npnpm install\ncp .env.example .env.local\n```\n\n#### Configure Environment\n\nEdit `.env.local`:\n\n```bash\n# Database (defaults to SQLite, no config needed)\nDB_TYPE=sqlite\n\n# Auth (defaults to fingerprint mode, no config needed)\nAUTH_ENABLED=false\n```\n\n> **AI Configuration:** No server-side env vars needed. Each user configures their own API Key, Base URL, and Model in **Settings > AI** within the app.\n\nSee `.env.example` for all available options (Google OAuth, PostgreSQL, etc.).\n\n#### Initialize Database & Run\n\n```bash\n# Generate and run migrations\npnpm db:generate\npnpm db:migrate\n\n# (Optional) Seed with sample data\npnpm db:seed\n\n# Start dev server\npnpm dev\n```\n\nOpen [http:\u002F\u002Flocalhost:3000](http:\u002F\u002Flocalhost:3000).\n\n## Environment Variables\n\n| Variable | Required | Default | Description |\n|----------|----------|---------|-------------|\n| `AUTH_SECRET` | Yes | — | Secret key for session encryption |\n| `DB_TYPE` | No | `sqlite` | Database type: `sqlite` or `postgresql` |\n| `DATABASE_URL` | When PostgreSQL | — | PostgreSQL connection string |\n| `SQLITE_PATH` | No | `.\u002Fdata\u002Fjade.db` | SQLite database file path |\n| `AUTH_ENABLED` | No | `false` | Enable Google OAuth (`true`) or use fingerprint mode (`false`) |\n| `GOOGLE_CLIENT_ID` | When OAuth | — | Google OAuth client ID |\n| `GOOGLE_CLIENT_SECRET` | When OAuth | — | Google OAuth client secret |\n| `APP_NAME` | No | `JadeAI` | Application display name |\n| `DEFAULT_LOCALE` | No | `zh` | Default language: `zh` or `en` |\n\n## Scripts\n\n| Command | Description |\n|---------|-------------|\n| `pnpm dev` | Start dev server with Turbopack |\n| `pnpm build` | Production build |\n| `pnpm start` | Start production server |\n| `pnpm lint` | Run ESLint |\n| `pnpm type-check` | TypeScript type checking |\n| `pnpm db:generate` | Generate Drizzle migrations (SQLite) |\n| `pnpm db:generate:pg` | Generate Drizzle migrations (PostgreSQL) |\n| `pnpm db:migrate` | Execute database migrations |\n| `pnpm db:studio` | Open Drizzle Studio (database GUI) |\n| `pnpm db:seed` | Seed database with sample data |\n\n## Project Structure\n\n```\nsrc\u002F\n├── app\u002F                        # Next.js App Router\n│   ├── [locale]\u002F               # i18n routes (\u002Fzh\u002F..., \u002Fen\u002F...)\n│   │   ├── dashboard\u002F          # Resume list & management\n│   │   ├── editor\u002F[id]\u002F        # Resume editor\n│   │   ├── preview\u002F[id]\u002F       # Full-screen preview\n│   │   ├── templates\u002F          # Template gallery\n│   │   └── share\u002F[token]\u002F      # Public shared resume viewer\n│   └── api\u002F\n│       ├── ai\u002F                 # AI endpoints\n│       │   ├── chat\u002F           #   Streaming chat with tool calls\n│       │   ├── generate-resume\u002F#   AI resume generation\n│       │   ├── jd-analysis\u002F    #   JD match analysis\n│       │   ├── grammar-check\u002F  #   Grammar & writing check\n│       │   ├── cover-letter\u002F   #   Cover letter generation\n│       │   ├── translate\u002F      #   Resume translation\n│       │   └── models\u002F         #   List available AI models\n│       ├── resume\u002F             # Resume CRUD, export, parse, share\n│       ├── share\u002F              # Public share access\n│       ├── user\u002F               # User profile & settings\n│       └── auth\u002F               # NextAuth handlers\n├── components\u002F\n│   ├── ui\u002F                     # shadcn\u002Fui base components\n│   ├── editor\u002F                 # Editor canvas, sections, fields, dialogs\n│   ├── ai\u002F                     # AI chat panel & bubble\n│   ├── preview\u002Ftemplates\u002F      # 50 resume templates\n│   ├── dashboard\u002F              # Dashboard cards, grid, dialogs\n│   └── layout\u002F                 # Header, theme provider, locale switcher\n├── lib\u002F\n│   ├── db\u002F                     # Schema, repositories, migrations, adapters\n│   ├── auth\u002F                   # Auth configuration\n│   └── ai\u002F                     # AI prompts, tools, model config\n├── hooks\u002F                      # Custom React hooks (7 hooks)\n├── stores\u002F                     # Zustand stores (resume, editor, settings, UI, tour)\n└── types\u002F                      # TypeScript type definitions\n```\n\n## Templates\n\nJadeAI includes **50 professionally designed resume templates** covering a wide range of styles and industries:\n\n\u003Cdetails>\n\u003Csummary>View all 50 templates\u003C\u002Fsummary>\n\n| # | Template | # | Template | # | Template |\n|---|----------|---|----------|---|----------|\n| 1 | Classic | 18 | Clean | 35 | Material |\n| 2 | Modern | 19 | Bold | 36 | Medical |\n| 3 | Minimal | 20 | Timeline | 37 | Luxe |\n| 4 | Professional | 21 | Nordic | 38 | Retro |\n| 5 | Two-Column | 22 | Gradient | 39 | Card |\n| 6 | ATS | 23 | Magazine | 40 | Rose |\n| 7 | Academic | 24 | Corporate | 41 | Teacher |\n| 8 | Creative | 25 | Consultant | 42 | Coder |\n| 9 | Elegant | 26 | Swiss | 43 | Zigzag |\n| 10 | Executive | 27 | Metro | 44 | Neon |\n| 11 | Developer | 28 | Architect | 45 | Scientist |\n| 12 | Designer | 29 | Japanese | 46 | Blocks |\n| 13 | Startup | 30 | Artistic | 47 | Ribbon |\n| 14 | Formal | 31 | Sidebar | 48 | Engineer |\n| 15 | Infographic | 32 | Finance | 49 | Watercolor |\n| 16 | Compact | 33 | Berlin | 50 | Mosaic |\n| 17 | Euro | 34 | Legal | | |\n\n\u003C\u002Fdetails>\n\n## API Reference\n\n\u003Cdetails>\n\u003Csummary>View all API endpoints\u003C\u002Fsummary>\n\n### Resume\n\n| Method | Endpoint | Description |\n|--------|----------|-------------|\n| `GET` | `\u002Fapi\u002Fresume` | List all resumes for current user |\n| `POST` | `\u002Fapi\u002Fresume` | Create a new resume |\n| `GET` | `\u002Fapi\u002Fresume\u002F[id]` | Get resume detail with all sections |\n| `PUT` | `\u002Fapi\u002Fresume\u002F[id]` | Update resume metadata or sections |\n| `DELETE` | `\u002Fapi\u002Fresume\u002F[id]` | Delete a resume |\n| `POST` | `\u002Fapi\u002Fresume\u002F[id]\u002Fduplicate` | Duplicate a resume |\n| `GET` | `\u002Fapi\u002Fresume\u002F[id]\u002Fexport` | Export resume (pdf, docx, html, txt, json) |\n| `POST` | `\u002Fapi\u002Fresume\u002Fparse` | Parse resume from PDF or image upload |\n| `POST` | `\u002Fapi\u002Fresume\u002F[id]\u002Fshare` | Create share link |\n| `GET` | `\u002Fapi\u002Fresume\u002F[id]\u002Fshare` | Get share settings |\n| `DELETE` | `\u002Fapi\u002Fresume\u002F[id]\u002Fshare` | Remove share link |\n\n### Share\n\n| Method | Endpoint | Description |\n|--------|----------|-------------|\n| `GET` | `\u002Fapi\u002Fshare\u002F[token]` | Access a publicly shared resume |\n\n### AI\n\n| Method | Endpoint | Description |\n|--------|----------|-------------|\n| `POST` | `\u002Fapi\u002Fai\u002Fchat` | Stream chat messages with resume context |\n| `GET` | `\u002Fapi\u002Fai\u002Fchat\u002Fsessions` | List chat sessions for a resume |\n| `POST` | `\u002Fapi\u002Fai\u002Fchat\u002Fsessions` | Create a new chat session |\n| `GET` | `\u002Fapi\u002Fai\u002Fchat\u002Fsessions\u002F[id]` | Get paginated messages for a session |\n| `DELETE` | `\u002Fapi\u002Fai\u002Fchat\u002Fsessions\u002F[id]` | Delete a chat session |\n| `POST` | `\u002Fapi\u002Fai\u002Fgenerate-resume` | Generate resume from job title & experience |\n| `POST` | `\u002Fapi\u002Fai\u002Fjd-analysis` | Analyze resume against a job description |\n| `POST` | `\u002Fapi\u002Fai\u002Fgrammar-check` | Check grammar and writing quality |\n| `POST` | `\u002Fapi\u002Fai\u002Fcover-letter` | Generate a tailored cover letter |\n| `POST` | `\u002Fapi\u002Fai\u002Ftranslate` | Translate resume content |\n| `GET` | `\u002Fapi\u002Fai\u002Fmodels` | List available AI models |\n\n### User\n\n| Method | Endpoint | Description |\n|--------|----------|-------------|\n| `GET` | `\u002Fapi\u002Fuser` | Get current user profile |\n| `PUT` | `\u002Fapi\u002Fuser` | Update user profile |\n| `GET` | `\u002Fapi\u002Fuser\u002Fsettings` | Get user settings |\n| `PUT` | `\u002Fapi\u002Fuser\u002Fsettings` | Update user settings |\n\n\u003C\u002Fdetails>\n\n## Contributing\n\nContributions are welcome! Here's how to get started:\n\n1. Fork the repository\n2. Create a feature branch: `git checkout -b feat\u002Fyour-feature`\n3. Commit your changes: `git commit -m 'feat: add your feature'`\n4. Push to the branch: `git push origin feat\u002Fyour-feature`\n5. Open a Pull Request\n\n## FAQ\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>How does AI configuration work?\u003C\u002Fb>\u003C\u002Fsummary>\n\nJadeAI does not require server-side AI API keys. Each user configures their own AI provider (OpenAI, Anthropic, or custom endpoint), API key, and model in **Settings > AI** within the app. API keys are stored in the browser's local storage and are never sent to the server for storage.\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>Can I switch between SQLite and PostgreSQL?\u003C\u002Fb>\u003C\u002Fsummary>\n\nYes. Set the `DB_TYPE` environment variable to `sqlite` or `postgresql`. SQLite is the default and requires zero configuration. For PostgreSQL, also set `DATABASE_URL`. Note that data is not automatically migrated between database types.\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>How does authentication work without OAuth?\u003C\u002Fb>\u003C\u002Fsummary>\n\nWhen `AUTH_ENABLED=false` (default), JadeAI uses browser fingerprinting via FingerprintJS. A unique fingerprint ID is generated for each browser and used as the user identifier. No login screen is shown — users can start building resumes immediately.\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>How is PDF export implemented?\u003C\u002Fb>\u003C\u002Fsummary>\n\nPDF export uses Puppeteer Core with @sparticuz\u002Fchromium. Each of the 50 templates has a dedicated server-side export handler that renders the resume to high-fidelity PDF. DOCX, HTML, TXT, and JSON exports are also supported.\n\n\u003C\u002Fdetails>\n\n## Star History\n\n## Star History\n\n\u003Ca href=\"https:\u002F\u002Fwww.star-history.com\u002F?repos=LingyiChen-AI%2FJadeAI&type=date&legend=top-left\">\n \u003Cpicture>\n   \u003Csource media=\"(prefers-color-scheme: dark)\" srcset=\"https:\u002F\u002Fapi.star-history.com\u002Fchart?repos=LingyiChen-AI\u002FJadeAI&type=date&theme=dark&legend=top-left\" \u002F>\n   \u003Csource media=\"(prefers-color-scheme: light)\" srcset=\"https:\u002F\u002Fapi.star-history.com\u002Fchart?repos=LingyiChen-AI\u002FJadeAI&type=date&legend=top-left\" \u002F>\n   \u003Cimg alt=\"Star History Chart\" src=\"https:\u002F\u002Fapi.star-history.com\u002Fchart?repos=LingyiChen-AI\u002FJadeAI&type=date&legend=top-left\" \u002F>\n \u003C\u002Fpicture>\n\u003C\u002Fa>\n\n## License\n\n[Apache License 2.0](LICENSE)\n","JadeAI 是一个基于人工智能的智能简历构建工具，提供了50多种专业模板、PDF\u002F图片解析、AI优化建议、职位描述匹配分析以及多格式导出等功能。项目采用TypeScript编写，利用了Next.js和React等现代前端技术栈，并支持一键Docker部署，方便快捷地搭建个人环境。它非常适合求职者在准备简历时使用，无论是从零开始创建还是对已有简历进行优化，都能通过其强大的AI功能显著提升简历的专业性和吸引力。此外，对于需要频繁更新简历内容或样式以适应不同岗位需求的人来说，JadeAI也是一个极佳的选择。",2,"2026-06-11 03:51:52","high_star"]