SkillAgentSearch skills...

JadeAI

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.

Install / Use

/learn @twwch/JadeAI
About this skill

Quality Score

0/100

Category

Operations

Supported Platforms

Universal

README

<div align="center">

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

中文文档

</div>

Community

Join our groups for discussion and support:

| QQ Group | WeChat Group | Lark Group | |:---:|:---:|:---:| | <img src="images/chat-group.jpg" width="200" alt="QQ Group QR Code" /> | <img src="images/wchat-group.jpg" width="200" alt="WeChat Group QR Code" /> | <img src="images/lark-chat.png" width="200" alt="Lark Group QR Code" /> |


Screenshots

| Template Gallery | Resume Editor | |:---:|:---:| | Template Gallery | Resume Editor |

| AI Resume Generation | AI Resume Parsing (Image) | |:---:|:---:| | AI Resume Generation | AI Resume Parsing |

| AI Optimization | Grammar Check | |:---:|:---:| | AI Optimization | Grammar Check |

| Grammar Auto-Fix | JD Match Analysis | |:---:|:---:| | Grammar Auto-Fix | JD Match Analysis |

| Multi-Format Export | Share Link | |:---:|:---:| | Multi-Format Export | Share Link |

| Shared Resume Page | AI Professional Photo | |:---:|:---:| | Shared Resume Page | AI Professional Photo |

| QR Code Section | |:---:| | QR Code Section |

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:

| Section | Supported Fields | |---------|-----------------| | Summary | Content text | | Work Experience | Description, Highlights | | Education | Highlights | | Projects | Description, Highlights | | Custom Section | Description | | Languages | Description | | GitHub | Description |

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

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

| Layer | Technology | |-------|-----------| | Framework | Next.js 16 (App Router, Turbopack) | | UI | React 19, Tailwind CSS 4, shadcn/ui, Radix UI | | Drag & Drop | @dnd-kit | | State | Zustand | | Database | Drizzle ORM (SQLite / PostgreSQL) | | Auth | NextAuth.js v5 + FingerprintJS | | AI | Vercel AI SDK v6 + OpenAI / Anthropic | | PDF | Puppeteer Core + @sparticuz/chromium | | i18n | next-intl | | Validation | Zod 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.

<details> <summary>With PostgreSQL</summary>
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
</details> <details> <summary>With Google OAuth</summary>
docker run -d -p 3000:3000 \
  -e NEXT_PUBLIC_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
</details>

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)
NEXT_PUBLIC_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

| Variable | Required | Default | Description | |----------|----------|---------|-------------| | AUTH_SECRET | Yes | — | Secret key for session encryption | | DB_TYPE | No | sqlite | Database type: sqlite or postgresql | | DATABASE_URL | When PostgreSQL | — | PostgreSQL connection string | | SQLITE_PATH | No | ./data/jade.db | SQLite database file path | | NEXT_PUBLIC_AUTH_ENABLED | No | false | Enable Google OAuth (true) or use fingerprint mode (false) | | GOOGLE_CLIENT_ID | When OAuth | — | Google OAuth client ID | | GOOGLE_CLIENT_SECRET | When OAuth | — | Google OAuth client secret | | NEXT_PUBLIC_APP_NAME | No | JadeAI | Application display name | | NEXT_PUBLIC_APP_URL | No | http://localhost:3000 | Application URL | | NEXT_PUBLIC_DEFAULT_LOCALE | No | zh | Default language: zh or en |

Scripts

| Command | Description | |---------|-------------| | pnpm dev | Start dev server with Turbopack | | pnpm build | Production build | | pnpm start | Start production server | | pnpm lint | Run ESLint | | pnpm type-check | TypeScript type checking | | pnpm db:generate | Generate Drizzle migrations (SQLite) | | pnpm db:generate:pg | Generate Drizzle migrations (PostgreSQL) | | pnpm db:migrate | Execute database migrations | | pnpm db:studio | Open Drizzle Studio (database GUI) | | pnpm db:seed | Seed 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
│ 

Related Skills

View on GitHub
GitHub Stars913
CategoryOperations
Updated5h ago
Forks96

Languages

TypeScript

Security Score

100/100

Audited on Mar 20, 2026

No findings