Smart Resume Builder is a full-stack, production-ready web application that enables users to build professional resumes, check ATS compatibility using AI, and export polished PDFs instantly. It features a live preview builder, OpenAI-powered resume scoring, JWT authentication, and a personal dashboard β all built with a modern tech stack and designed for a premium user experience. Deployed on Vercel.
- Overview
- Live Demo
- Features
- How It Works
- Tech Stack
- Project Structure
- Getting Started
- Environment Variables
- API Reference
- Deployment Guide
- Contributing
- License
Smart Resume Builder gives job seekers a complete edge. Users sign up, build their resume with a guided form and live side-by-side preview, save it to their personal dashboard, and then run it through an AI-powered ATS Checker that uses OpenAI's Vision API to return a score, strengths, weaknesses, and specific improvement recommendations. Resumes can be exported to print-ready multi-page PDFs at any time.
- Guided multi-section form: Personal Info, Work Experience, Education, and Skills.
- Real-time live preview pane that updates as you type.
- Create new resumes or edit existing ones from your dashboard (
/builder/:id).
- Upload an image/screenshot of any resume.
- Powered by OpenAI Vision API β analyzes layout, keywords, and formatting.
- Returns an ATS score (0β100) with color-coded rating: Excellent / Good / Needs Work.
- Detailed breakdown of Strengths, Weaknesses, and Recommendations.
- Export your finished resume as a high-quality PDF.
- Smart pagination via
html2pdf.jsβ content never gets clipped across pages.
- Built with Tailwind CSS with glassmorphism card components.
- Full Dark Mode / Light Mode toggle powered by
ThemeContext. - Smooth animated transitions using Framer Motion.
- Full JWT-based stateless auth (register β login β protected routes).
- Passwords hashed with bcryptjs.
PrivateRouteguard redirects unauthenticated users to/login.- Protected pages: Dashboard, Builder, ATS Checker.
- Public pages: Home, Login, Register, Help.
- View all your saved resumes in one place.
- One-click edit or delete for any resume.
- Quick-launch button to jump into the Resume Builder.
- Comprehensive guide covering AI Resume Building and ATS Checking workflows.
- Direct WhatsApp and Email support buttons for instant assistance.
User Registers / Logs In (JWT issued)
β
βΌ
Resume Builder βββββββββββββββββββββββββββββββ
(Form + Live Preview) β
β β
βΌ βΌ
Save Resume to SQLite DB ATS Checker (Upload Image)
β β
βΌ βΌ
Dashboard (Manage Resumes) OpenAI Vision API β Score + Feedback
β
βΌ
Export Resume as PDF (html2pdf.js)
| Technology | Version | Purpose |
|---|---|---|
| React | 18 | UI Framework (via Vite) |
| Tailwind CSS | v3 | Styling & Design System |
| Framer Motion | latest | Animations & Transitions |
| Lucide React | latest | Icon Library |
| html2pdf.js | latest | PDF Generation & Export |
| React Router DOM | v6 | Client-Side Routing |
| Axios | latest | HTTP Client |
| Technology | Version | Purpose |
|---|---|---|
| Node.js | v18+ | Runtime Environment |
| Express.js | 4.x | Web Server & REST API |
| SQLite (sqlite3) | 6.x | Embedded Local Database |
| OpenAI SDK | 4.x | AI Vision Resume Analysis |
| Multer | 2.x | Multipart Image Upload |
| jsonwebtoken | 9.x | JWT Authentication |
| bcryptjs | 2.x | Password Hashing |
| Helmet | 7.x | HTTP Security Headers |
| Morgan | 1.x | HTTP Request Logging |
| dotenv | 16.x | Environment Variable Loader |
π¦ Smart-Resume-Builder/
βββ π backend/ # Express.js API Server
β βββ π config/
β β βββ π db.js # SQLite DB initialization (initDb)
β βββ π controllers/
β β βββ π authController.js # Register & Login logic
β β βββ π resumeController.js # Resume CRUD operations
β β βββ π aiController.js # OpenAI ATS analysis
β βββ π middleware/
β β βββ π authMiddleware.js # JWT verification middleware
β βββ π models/ # DB query helpers (User, Resume)
β βββ π routes/
β β βββ π authRoutes.js # POST /api/auth/register, /login
β β βββ π resumeRoutes.js # GET/POST/DELETE /api/resumes
β β βββ π aiRoutes.js # POST /api/ai/analyze-ats-image
β βββ π database.sqlite # Local SQLite database file
β βββ π server.js # Entry point (Express app setup)
β
βββ π frontend/ # React 18 + Vite UI
β βββ π public/ # Static assets
β βββ π src/
β β βββ π components/
β β β βββ π Navbar.jsx # Top navigation bar
β β β βββ π ResumePreview.jsx # Live resume preview pane
β β βββ π context/
β β β βββ π AuthContext.jsx # Global auth state & JWT storage
β β β βββ π ThemeContext.jsx# Dark / Light mode toggle
β β βββ π pages/
β β β βββ π Home.jsx # Landing page (public)
β β β βββ π Login.jsx # Login form (public)
β β β βββ π Register.jsx # Registration form (public)
β β β βββ π Dashboard.jsx # Saved resumes list (protected)
β β β βββ π Builder.jsx # Resume form + live preview (protected)
β β β βββ π ATSChecker.jsx # AI ATS score page (protected)
β β β βββ π Help.jsx # Help center (public)
β β βββ π services/
β β β βββ π api.js # Axios instance with base URL & JWT header
β β βββ π App.jsx # Route definitions (PrivateRoute guard)
β β βββ π index.css # Tailwind directives & custom layers
β βββ π vercel.json # Vercel deployment & SPA rewrite config
β βββ π vite.config.js # Vite bundler settings
β
βββ π README.md
- Node.js v18+ installed
- An OpenAI API Key (get yours here)
git clone https://github.com/your-username/smart-resume-builder.git
cd smart-resume-buildercd backend
npm installCreate a .env file in the backend/ folder (see Environment Variables), then:
node server.js
# β
Server starts on http://localhost:5000
# β
SQLite ConnectedOpen a new terminal:
cd frontend
npm install
npm run dev
# β
App starts on http://localhost:5173Open your browser at http://localhost:5173 to use the app.
Create a .env file in the backend/ directory:
# Server Port
PORT=5000
# Authentication β use a long, random secret string
JWT_SECRET=your_super_secret_jwt_key_here
# OpenAI β required for the ATS Checker feature
OPENAI_API_KEY=sk-your-openai-api-key-here
β οΈ Never commit your.envfile. Ensure it is listed in.gitignore.
All protected routes require the header:
Authorization: Bearer <your_jwt_token>
| Method | Endpoint | Auth | Body | Description |
|---|---|---|---|---|
POST |
/api/auth/register |
β | { name, email, password } |
Register a new user |
POST |
/api/auth/login |
β | { email, password } |
Login, returns JWT token |
| Method | Endpoint | Auth | Description |
|---|---|---|---|
GET |
/api/resumes |
β | Get all resumes for the logged-in user |
POST |
/api/resumes |
β | Save a new resume |
GET |
/api/resumes/:id |
β | Get a single resume by ID |
PUT |
/api/resumes/:id |
β | Update an existing resume |
DELETE |
/api/resumes/:id |
β | Delete a resume by ID |
| Method | Endpoint | Auth | Body | Description |
|---|---|---|---|---|
POST |
/api/ai/analyze-ats-image |
β | FormData: { resumeImage: File } |
Analyze resume image, returns ATS score + feedback |
Example ATS Response:
{
"score": 78,
"summary": "A strong resume with good structure, but missing key technical keywords.",
"feedback": {
"strengths": ["Clean layout", "Quantified achievements"],
"weaknesses": ["Missing technical skills section"],
"recommendations": ["Add a Skills section with relevant technologies"]
}
}- Push your project to a GitHub Repository.
- Ensure
node_modulesis in.gitignore. - Go to vercel.com β Import your repository.
- Set Root Directory to
frontend. - Vercel will auto-detect Vite and run
npx vite build.
- Deploy the
backend/folder as a Node.js Web Service. - Set all environment variables (
PORT,JWT_SECRET,OPENAI_API_KEY) in the dashboard. - Set the Start Command to:
node server.js - After deployment, copy your live backend URL and update
frontend/src/services/api.js:
// Change from:
baseURL: 'http://localhost:5000/api'
// To:
baseURL: 'https://your-backend.onrender.com/api'Contributions, issues, and feature requests are welcome!
- Fork the repository
- Create your branch:
git checkout -b feature/my-feature - Commit your changes:
git commit -m 'Add my feature' - Push to the branch:
git push origin feature/my-feature - Open a Pull Request
"Your resume is not just a document β it's the blueprint of your professional journey. Build it with purpose, design it with care, and let it open the doors to your future."
Build your future today. π