Star 历史趋势
数据来源: GitHub API · 生成自 Stargazers.cn
README.md

JadeAI

AI-Powered Smart Resume Builder

Build professional resumes with drag-and-drop editing, real-time AI optimization, 50 templates, and multi-format export.

License Next.js React TypeScript Docker

中文文档


Community

Join our groups for discussion and support:

Linux.do

Recent Updates

v0.3.4 · Brand Color System & Theme Switching

  • Introduced semantic --brand-* CSS tokens; replaced hardcoded pink-* across 60+ files
  • New brand switcher in the user menu with three presets: Mint (default), Blue, Pink
  • SSR-safe anti-flicker hydration; legacy values auto-migrated via localStorage
  • Added a Mint resume preset to the theme editor
  • Export pipelines (PDF / HTML / DOCX) now read from src/lib/brand-constants.ts

v0.3.3 · Mobile Experience & Interview Report Stability

  • Mobile-friendly template preview and bottom action bars for preview/share pages
  • Fixed mobile scroll: canvas/preview roots use h-full instead of flex-1
  • Improved stability of interview report generation

v0.3.2 · Runtime Environment Variables

  • Removed all NEXT_PUBLIC_* build-time variables in favor of runtime env

v0.3.1 · Auth Runtime Flag

  • Changed NEXT_PUBLIC_AUTH_ENABLED to runtime AUTH_ENABLED

Screenshots

Template GalleryResume Editor
Template GalleryResume Editor
AI Resume GenerationAI Resume Parsing (Image)
AI Resume GenerationAI Resume Parsing
AI OptimizationGrammar Check
AI OptimizationGrammar Check
Grammar Auto-FixJD Match Analysis
Grammar Auto-FixJD Match Analysis
Multi-Format ExportShare Link
Multi-Format ExportShare Link
Shared Resume PageAI Professional Photo
Shared Resume PageAI Professional Photo
QR Code Section
QR Code Section
Interview SetupMock Interview
Interview SetupMock Interview
Interview ListInterview Report
Interview ListInterview Report

Deployment Video

Watch the full deployment walkthrough on Bilibili:

Deployment Video

Watch on Bilibili →

Features

Resume Editing

  • Drag & Drop Editor — Visually arrange and reorder resume sections and items
  • Inline Editing — Click any field to edit directly on the canvas
  • 50 Professional Templates — Classic, Modern, Minimal, Creative, ATS-Friendly, Timeline, Nordic, Swiss, and more
  • Theme Customization — Colors, fonts, spacing, and margins with live preview
  • Undo / Redo — Full edit history (up to 50 steps)
  • Auto Save — Configurable interval (0.3s–5s), with manual save option
  • Markdown Support — Use Markdown syntax in text fields to format content (e.g., **bold** for bold text)

Markdown Formatting

The following resume sections support Markdown syntax:

SectionSupported Fields
SummaryContent text
Work ExperienceDescription, Highlights
EducationHighlights
ProjectsDescription, Highlights
Custom SectionDescription
LanguagesDescription
GitHubDescription

Supported syntax:

**bold text**    → bold
`code text`      → inline code
- item           → bullet list

Skills, Certifications, and Personal Info fields do not support Markdown.

AI Capabilities

  • AI Chat Assistant — Conversational AI integrated in the editor, with multi-session support and persistent history
  • AI Resume Generation — Generate a complete resume from job title, experience, and skills
  • Resume Parsing — Upload an existing PDF or image, AI extracts all content automatically
  • JD Match Analysis — Compare resume against a job description: keyword matching, ATS score, and improvement suggestions
  • Cover Letter Generation — AI-tailored cover letter based on resume and JD, with tone selection (formal / friendly / confident)
  • Grammar & Writing Check — Detect weak verbs, vague descriptions, and grammar issues; returns a quality score
  • Translation — Translate resume content across 10 languages while preserving technical terms
  • Flexible AI Provider — Supports OpenAI, Anthropic, and custom API endpoints; each user configures their own key in-app

Mock Interview

  • JD-Based Interview Simulation — Paste a job description, AI plays different interviewer roles in sequence
  • 6 Preset Interviewers — HR, Technical, Scenario, Behavioral, Project Deep Dive, Leader — each with unique personality and questioning style
  • Custom Interviewers — Create your own interviewer with custom focus areas and style
  • Smart Follow-ups — AI adapts questions based on answer quality, probing deeper when needed
  • Interview Controls — Skip questions, request hints, mark for review, pause/resume
  • Detailed Report — Per-question scoring, competency radar chart, improvement plan with resources
  • History Comparison — Track score trends and dimension progress across interviews
  • PDF & Markdown Export — Export interview reports for offline review

Export & Sharing

  • Multi-Format Export — PDF (Puppeteer + Chromium), Smart One-Page PDF (auto-fit to single page), DOCX, HTML, TXT, JSON
  • 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)
  • Link Sharing — Token-based shareable links with optional password protection
  • View Counter — Track how many times a shared resume has been viewed

Management

  • Multi-Resume Dashboard — Grid and list views, search, sort (by date, name)
  • Import from JSON — Create a new resume from a JSON export directly on the dashboard
  • Duplicate & Rename — Quick resume management actions
  • Interactive Tours — Step-by-step onboarding for first-time users

Other

  • Bilingual UI — Full Chinese (zh) and English (en) interface
  • Dark Mode — Light, dark, and system theme support
  • Flexible Auth — Google OAuth or browser fingerprint (zero-config)
  • Dual Database — SQLite (default, zero-config) or PostgreSQL

Tech Stack

LayerTechnology
FrameworkNext.js 16 (App Router, Turbopack)
UIReact 19, Tailwind CSS 4, shadcn/ui, Radix UI
Drag & Drop@dnd-kit
StateZustand
DatabaseDrizzle ORM (SQLite / PostgreSQL)
AuthNextAuth.js v5 + FingerprintJS
AIVercel AI SDK v6 + OpenAI / Anthropic
PDFPuppeteer Core + @sparticuz/chromium
i18nnext-intl
ValidationZod v4

Getting Started

Docker (Recommended)

# Generate a secret key first openssl rand -base64 32 docker run -d -p 3000:3000 \ -e AUTH_SECRET=<your-generated-secret> \ -v jadeai-data:/app/data \ twwch/jadeai:latest

Open http://localhost:3000. Database auto-migrates and seeds on first start.

AUTH_SECRET is required for session encryption. Generate one with openssl rand -base64 32.

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.

With PostgreSQL
docker run -d -p 3000:3000 \ -e AUTH_SECRET=<your-generated-secret> \ -e DB_TYPE=postgresql \ -e DATABASE_URL=postgresql://user:pass@host:5432/jadeai \ twwch/jadeai:latest
With Google OAuth
docker run -d -p 3000:3000 \ -e AUTH_ENABLED=true \ -e AUTH_SECRET=your-secret \ -e GOOGLE_CLIENT_ID=xxx \ -e GOOGLE_CLIENT_SECRET=xxx \ -v jadeai-data:/app/data \ twwch/jadeai:latest

Local Development

Prerequisites

  • Node.js 18+
  • pnpm 9+

Installation

git clone https://github.com/twwch/JadeAI.git cd JadeAI pnpm install cp .env.example .env.local

Configure Environment

Edit .env.local:

# Database (defaults to SQLite, no config needed) DB_TYPE=sqlite # Auth (defaults to fingerprint mode, no config needed) AUTH_ENABLED=false

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.

See .env.example for all available options (Google OAuth, PostgreSQL, etc.).

Initialize Database & Run

# Generate and run migrations pnpm db:generate pnpm db:migrate # (Optional) Seed with sample data pnpm db:seed # Start dev server pnpm dev

Open http://localhost:3000.

Environment Variables

VariableRequiredDefaultDescription
AUTH_SECRETYesSecret key for session encryption
DB_TYPENosqliteDatabase type: sqlite or postgresql
DATABASE_URLWhen PostgreSQLPostgreSQL connection string
SQLITE_PATHNo./data/jade.dbSQLite database file path
AUTH_ENABLEDNofalseEnable Google OAuth (true) or use fingerprint mode (false)
GOOGLE_CLIENT_IDWhen OAuthGoogle OAuth client ID
GOOGLE_CLIENT_SECRETWhen OAuthGoogle OAuth client secret
APP_NAMENoJadeAIApplication display name
DEFAULT_LOCALENozhDefault language: zh or en

Scripts

CommandDescription
pnpm devStart dev server with Turbopack
pnpm buildProduction build
pnpm startStart production server
pnpm lintRun ESLint
pnpm type-checkTypeScript type checking
pnpm db:generateGenerate Drizzle migrations (SQLite)
pnpm db:generate:pgGenerate Drizzle migrations (PostgreSQL)
pnpm db:migrateExecute database migrations
pnpm db:studioOpen Drizzle Studio (database GUI)
pnpm db:seedSeed database with sample data

Project Structure

src/
├── app/                        # Next.js App Router
│   ├── [locale]/               # i18n routes (/zh/..., /en/...)
│   │   ├── dashboard/          # Resume list & management
│   │   ├── editor/[id]/        # Resume editor
│   │   ├── preview/[id]/       # Full-screen preview
│   │   ├── templates/          # Template gallery
│   │   └── share/[token]/      # Public shared resume viewer
│   └── api/
│       ├── ai/                 # AI endpoints
│       │   ├── chat/           #   Streaming chat with tool calls
│       │   ├── generate-resume/#   AI resume generation
│       │   ├── jd-analysis/    #   JD match analysis
│       │   ├── grammar-check/  #   Grammar & writing check
│       │   ├── cover-letter/   #   Cover letter generation
│       │   ├── translate/      #   Resume translation
│       │   └── models/         #   List available AI models
│       ├── resume/             # Resume CRUD, export, parse, share
│       ├── share/              # Public share access
│       ├── user/               # User profile & settings
│       └── auth/               # NextAuth handlers
├── components/
│   ├── ui/                     # shadcn/ui base components
│   ├── editor/                 # Editor canvas, sections, fields, dialogs
│   ├── ai/                     # AI chat panel & bubble
│   ├── preview/templates/      # 50 resume templates
│   ├── dashboard/              # Dashboard cards, grid, dialogs
│   └── layout/                 # Header, theme provider, locale switcher
├── lib/
│   ├── db/                     # Schema, repositories, migrations, adapters
│   ├── auth/                   # Auth configuration
│   └── ai/                     # AI prompts, tools, model config
├── hooks/                      # Custom React hooks (7 hooks)
├── stores/                     # Zustand stores (resume, editor, settings, UI, tour)
└── types/                      # TypeScript type definitions

Templates

JadeAI includes 50 professionally designed resume templates covering a wide range of styles and industries:

View all 50 templates
#Template#Template#Template
1Classic18Clean35Material
2Modern19Bold36Medical
3Minimal20Timeline37Luxe
4Professional21Nordic38Retro
5Two-Column22Gradient39Card
6ATS23Magazine40Rose
7Academic24Corporate41Teacher
8Creative25Consultant42Coder
9Elegant26Swiss43Zigzag
10Executive27Metro44Neon
11Developer28Architect45Scientist
12Designer29Japanese46Blocks
13Startup30Artistic47Ribbon
14Formal31Sidebar48Engineer
15Infographic32Finance49Watercolor
16Compact33Berlin50Mosaic
17Euro34Legal

API Reference

View all API endpoints

Resume

MethodEndpointDescription
GET/api/resumeList all resumes for current user
POST/api/resumeCreate a new resume
GET/api/resume/[id]Get resume detail with all sections
PUT/api/resume/[id]Update resume metadata or sections
DELETE/api/resume/[id]Delete a resume
POST/api/resume/[id]/duplicateDuplicate a resume
GET/api/resume/[id]/exportExport resume (pdf, docx, html, txt, json)
POST/api/resume/parseParse resume from PDF or image upload
POST/api/resume/[id]/shareCreate share link
GET/api/resume/[id]/shareGet share settings
DELETE/api/resume/[id]/shareRemove share link

Share

MethodEndpointDescription
GET/api/share/[token]Access a publicly shared resume

AI

MethodEndpointDescription
POST/api/ai/chatStream chat messages with resume context
GET/api/ai/chat/sessionsList chat sessions for a resume
POST/api/ai/chat/sessionsCreate a new chat session
GET/api/ai/chat/sessions/[id]Get paginated messages for a session
DELETE/api/ai/chat/sessions/[id]Delete a chat session
POST/api/ai/generate-resumeGenerate resume from job title & experience
POST/api/ai/jd-analysisAnalyze resume against a job description
POST/api/ai/grammar-checkCheck grammar and writing quality
POST/api/ai/cover-letterGenerate a tailored cover letter
POST/api/ai/translateTranslate resume content
GET/api/ai/modelsList available AI models

User

MethodEndpointDescription
GET/api/userGet current user profile
PUT/api/userUpdate user profile
GET/api/user/settingsGet user settings
PUT/api/user/settingsUpdate user settings

Contributing

Contributions are welcome! Here's how to get started:

  1. Fork the repository
  2. Create a feature branch: git checkout -b feat/your-feature
  3. Commit your changes: git commit -m 'feat: add your feature'
  4. Push to the branch: git push origin feat/your-feature
  5. Open a Pull Request

FAQ

How does AI configuration work?

JadeAI 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.

Can I switch between SQLite and PostgreSQL?

Yes. 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.

How does authentication work without OAuth?

When 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.

How is PDF export implemented?

PDF export uses Puppeteer Core with @sparticuz/chromium. 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.

Star History

Star History Chart

License

Apache License 2.0

关于 About

AI-Powered Smart Resume Builder — 50+ professional templates, PDF/image parsing, AI optimization, JD match analysis, multi-format export. Open source & free, one-click Docker deployment.
aiai-writingawesome-ai-toolsawesome-cvawesome-resumesresumeresume-builder

语言 Languages

TypeScript99.4%
CSS0.4%
Shell0.1%
Dockerfile0.1%
JavaScript0.0%

提交活跃度 Commit Activity

代码提交热力图
过去 52 周的开发活跃度
51
Total Commits
峰值: 28次/周
Less
More

核心贡献者 Contributors