Smart Resume is a private, multi-user resume workspace for creating, improving, sharing, exporting, and rehearsing resumes with AI. It combines a Spring Boot backend with a React + Vite frontend and covers the full resume workflow: account access, structured editing, live preview, templates, scoring, public sharing, PDF export, submissions, and interview practice.
- Multi-user login and registration with admin-controlled registration settings
- Resume hub for creating, editing, copying, deleting, recovering, versioning, and sharing resumes
- Structured editor with real-time preview, A4 preview, section settings, and template management
- AI provider configuration, resume chat, resume scoring, translation, and interview assistance
- Interview workspace with target company context, AI answer suggestions, chat history, and reports
- Submission tracking for job applications and resume delivery
- BOSS Zhipin browser extension for capturing job details, saving applications, and generating AI cover letters
- Two PDF export paths:
- Quick export in the browser with
html2canvasandjspdf - High-quality server-side export with Playwright and Chromium
- Quick export in the browser with
| Login | Resume Homepage |
|---|---|
![]() |
![]() |
| AI Configuration | Recycle Bin |
|---|---|
![]() |
![]() |
| Resume Editor | A4 Preview |
|---|---|
![]() |
![]() |
| Resume Chat | Resume Translation |
|---|---|
![]() |
![]() |
| Score Overview | Score Details | Score Suggestions |
|---|---|---|
![]() |
![]() |
![]() |
| Resume Version | Resume Share | Share Detail |
|---|---|---|
![]() |
![]() |
![]() |
| Template Homepage | Template Editor | Resume Import |
|---|---|---|
![]() |
![]() |
![]() |
| Submission Tracking |
|---|
![]() |
| Interview Homepage | Interview Chat |
|---|---|
![]() |
![]() |
| AI Answer | Interview Report 1 | Interview Report 2 |
|---|---|---|
![]() |
![]() |
![]() |
| Login | Resume Homepage | AI Configuration |
|---|---|---|
![]() |
![]() |
![]() |
| Recycle Bin | Submission Tracking | Resume Settings |
|---|---|---|
![]() |
![]() |
![]() |
| Resume Editor | Resume Preview | Resume Chat |
|---|---|---|
![]() |
![]() |
![]() |
| Score Overview | Score Details | Share Detail |
|---|---|---|
![]() |
![]() |
![]() |
| Version List | Version Detail |
|---|---|
![]() |
![]() |
| Template Homepage | Template Editor |
|---|---|
![]() |
![]() |
| Interview Homepage | Target Company | Interview Chat |
|---|---|---|
![]() |
![]() |
![]() |
| AI Answer | Interview Report |
|---|---|
![]() |
![]() |
| Login | Service URL |
|---|---|
![]() |
![]() |
| Job Capture | AI Cover Letter |
|---|---|
![]() |
![]() |
- Java 21
- Spring Boot 3.5.14
- PostgreSQL
- Flyway
- MyBatis-Flex
- Spring AI
- Playwright 1.60.0 for high-quality PDF export
- React 19.2
- TypeScript
- Vite 8
- Ant Design 6
- React Router 7
html2canvasandjspdffor quick browser-side PDF export
- TypeScript
- Vite
- Chrome extension APIs
smart-resume/
|-- backend/ Spring Boot API, database migrations, domain services, PDF export
|-- browser-extension/ BOSS Zhipin browser extension for job capture and cover letters
|-- docs/ README screenshots and supporting assets
|-- frontend/ React application for workspace, editor, sharing, templates, and interviews
`-- .trellis/ Project workflow, specs, and task records
- Java 21
- Node.js 20.19+ and npm
- PostgreSQL
Optional for AI features:
- An OpenAI-compatible API key
- A DeepSeek API key
- Or a local Ollama instance
git clone <your-repo-url>
cd smart-resumeCreate a database named smart_resume:
CREATE DATABASE smart_resume;Default backend settings:
- Database URL:
jdbc:postgresql://localhost:5432/smart_resume - Username:
postgres - Password:
postgres - Backend port:
8080
You can override them with environment variables:
export SMART_RESUME_DB_URL=jdbc:postgresql://localhost:5432/smart_resume
export SMART_RESUME_DB_USERNAME=postgres
export SMART_RESUME_DB_PASSWORD=postgres
export SMART_RESUME_BACKEND_PORT=8080
export SMART_RESUME_TOKEN_SECRET=change-this-secretIn PowerShell, use $env:NAME='value' instead of export.
cd frontend
npm install
cd ..Deploy the entire stack (PostgreSQL 17.6, Spring Boot 3, React, Nginx) with one command:
# Copy environment configuration
cp .env.example .env
# Edit configuration (modify passwords and secrets for production)
vim .env
# Deploy with Docker Compose
docker-compose up -dOr run the deployment helper, which creates .env when needed, checks ports and HTTPS certificates, then starts the stack:
./deploy.shAccess the application at http://localhost by default, or at the APP_DOMAIN/HTTPS URL configured in .env.
For detailed deployment instructions, see Docker Deployment Guide
From the project root:
./start.shThe script checks Node.js and Java versions, installs frontend dependencies, builds the frontend, syncs frontend/dist/ into the backend static resources, installs and builds the browser extension, builds the backend JAR, installs Playwright Chromium when missing, then starts the Vite frontend dev server and the backend server together.
The frontend is available at http://localhost:5173 by default, and the backend is available at http://localhost:8080.
To build without starting the server:
./build.shStart the backend:
cd backend
./mvnw spring-boot:runStart the frontend in another terminal:
cd frontend
npm run devThen open the Vite URL shown in the terminal, usually http://localhost:5173.
The frontend uses http://localhost:8080 by default. To point it to another backend:
cd frontend
echo 'VITE_API_BASE_URL=http://localhost:8080' > .env.local
npm run devThe BOSS Zhipin helper is a local Chrome/Edge extension. It reads the active BOSS job page, sends the extracted job details to your Smart Resume service, and can create an application record or AI cover letter from a selected resume.
- Start Smart Resume first, either with the one-command script or with the backend running at
http://localhost:8080. - If you ran
./start.shor./build.sh, the extension has already been built atbrowser-extension/dist. To build only the extension manually:
cd browser-extension
npm install
npm run build- Open
chrome://extensionsoredge://extensions. - Enable developer mode.
- Choose "Load unpacked" and select
browser-extension/dist.
- Open a BOSS Zhipin job page, such as
https://www.zhipin.com/web/geek/job*orhttps://www.zhipin.com/job_detail/*. - Open the Smart Resume BOSS Helper extension.
- On first use, enter the Smart Resume service URL, for example
http://localhost:8080, and save it. - Sign in with your Smart Resume account.
- Select a resume. The extension fills company, position, JD, salary, education, and work-duration notes from the current job page.
- When switching between jobs in the same BOSS page, click "Refresh" in the extension before saving or generating.
- Click "Save application" to create or reuse a BOSS application record, or click "Generate cover letter" to create an AI cover letter.
- After a cover letter is generated, use the Job/Cover letter tabs to switch back and review or copy the generated letter again.
- Open the frontend in your browser.
- Log in with the default admin account: username
admin, passwordadmin123. - Change the default password immediately from system settings.
- Other users can register new accounts when public registration is enabled.
AI features are configured from the application UI. The backend supports OpenAI-compatible endpoints, DeepSeek, and Ollama. These providers are used by resume chat, resume scoring, translation, interview generation, AI answer suggestions, and interview reports.
- Public share pages can be open or password-protected.
- Quick export runs fully in the browser and produces an image-based PDF.
- High-quality export runs on the backend with Playwright and Chromium and produces a real-text, ATS-friendly PDF.
- In development mode, high-quality export may return 503 until
frontend/dist/has been built and copied into backend static resources. - The frontend has a package-level guide in frontend/README.md.
Smart Resume is licensed under the Apache License 2.0. See LICENSE for the full text and NOTICE for attribution details.















































