ResumeForge is an AI-powered resume builder that helps users create professional, ATS-optimized resumes in minutes. The platform uses AI to generate content, improve resume sections, and provide structured templates suitable for modern hiring systems.
Build professional, ATS-optimized resumes in minutes β powered by AI.
π Live Demo β’ Features β’ Tech Stack β’ Getting Started β’ API Reference β’ Deployment
ResumeForge AI is a full-stack web application that combines a modern React frontend with an Express/Node.js backend and OpenAI integration to streamline resume creation. Users can build and manage multiple resumes, upload existing PDFs for AI-powered auto-fill, have AI enhance their professional summaries and job descriptions, choose from multiple templates, and share or export their resumes as PDFs.
- PDF Auto-Fill β Upload an existing resume PDF and AI extracts all your data automatically.
- Summary Enhancement β One-click AI improvement of your professional summary using compelling, ATS-friendly language.
- Job Description Enhancement β AI rewrites experience bullet points with strong action verbs and quantifiable achievements.
- Section-Based Editing β Dedicated, guided forms for:
- Personal Information (name, contact, LinkedIn, website, profile photo)
- Professional Summary
- Work Experience (with current-job toggle)
- Education (degree, GPA, graduation date)
- Projects (name, type, description)
- Skills (tag-based input)
- Real-Time Preview β See your resume update live as you type.
- Multiple Resumes β Create, edit, and manage multiple resumes from one dashboard.
- 4 Professional Templates β Classic, Modern, Minimal, and Minimal with Image.
- Accent Color Picker β Personalize template colors to match your style.
- Profile Image Upload β Supports background removal via ImageKit.
- Secure registration and login with JWT and bcrypt password hashing.
- Make resumes public for easy sharing via a unique URL.
- PDF Export β Download your resume as a print-ready PDF.
| Layer | Technology |
|---|---|
| Frontend | React 19, Vite 7, Tailwind CSS 4 |
| State Management | Redux Toolkit |
| Routing | React Router DOM v7 |
| HTTP Client | Axios |
| Backend | Node.js, Express 5 |
| Database | MongoDB (Mongoose) |
| Authentication | JSON Web Tokens (JWT), bcrypt |
| AI | OpenAI API (GPT-4) / Google GenAI |
| Image Hosting | ImageKit |
| File Uploads | Multer |
| Notifications | React Hot Toast |
| Icons | Lucide React |
| Dev Tooling | Nodemon, ESLint |
ResumeForge-AI/
βββ client/ # React + Vite frontend
β βββ public/ # Static assets
β βββ src/
β βββ app/ # Redux store & auth slice
β βββ components/ # Reusable UI components
β β βββ Home/ # Landing page sections
β β βββ templates/ # Resume template renderers
β βββ configs/ # Axios client config
β βββ pages/ # Route-level pages
β βββ Home.jsx
β βββ Login.jsx
β βββ Dashboard.jsx
β βββ ResumeBuilder.jsx
β βββ Preview.jsx
β
βββ server/ # Node.js + Express backend
βββ configs/ # DB, AI, ImageKit, Multer configs
βββ controllers/ # Business logic
βββ middlewares/ # JWT auth middleware
βββ models/ # Mongoose schemas (User, Resume)
βββ routes/ # API route definitions
βββ utils/ # ApiError, ApiResponse, AsyncHandler
- Node.js v18 or higher
- npm v9 or higher
- A MongoDB connection string (local or MongoDB Atlas)
- An OpenAI API key
- An ImageKit account (for image hosting)
git clone https://github.com/aryanghugare/ResumeForge-AI.git
cd ResumeForge-AICreate a file at server/.env with the following variables:
PORT=3000
MONGODB_URI=mongodb+srv://<user>:<password>@cluster.mongodb.net/resumeforge
JWT_SECRET=your_super_secret_jwt_key
# OpenAI
OPENAI_API_KEY=sk-...
OPENAI_BASE_URL=https://api.openai.com/v1
OPENAI_MODEL=gpt-4-turbo
# ImageKit
IMAGEKIT_PUBLIC_KEY=your_imagekit_public_key
IMAGEKIT_PRIVATE_KEY=your_imagekit_private_key
IMAGEKIT_URL_ENDPOINT=https://ik.imagekit.io/your_idCreate a file at client/.env.local:
VITE_BASE_URL=http://localhost:3000# Install server dependencies
cd server && npm install
# Install client dependencies
cd ../client && npm installOpen two terminals:
Terminal 1 β Backend:
cd server
npm run server # Starts Express on http://localhost:3000Terminal 2 β Frontend:
cd client
npm run dev # Starts Vite dev server on http://localhost:5173Open http://localhost:5173 in your browser.
# Build the frontend
cd client
npm run build # Output goes to client/dist/
# Run the backend in production mode
cd ../server
npm startAll protected routes require an Authorization: <token> header with a valid JWT.
| Method | Endpoint | Auth | Description |
|---|---|---|---|
POST |
/api/users/register |
β | Register a new user |
POST |
/api/users/login |
β | Log in and receive a JWT |
GET |
/api/users/data |
β | Get current user info |
GET |
/api/users/resumes |
β | List all resumes for the user |
| Method | Endpoint | Auth | Description |
|---|---|---|---|
POST |
/api/resumes/create |
β | Create a new resume |
PUT |
/api/resumes/update |
β | Update a resume (supports image upload) |
DELETE |
/api/resumes/delete/:resumeId |
β | Delete a resume |
GET |
/api/resumes/get/:resumeId |
β | Get a specific resume |
GET |
/api/resumes/public/:resumeId |
β | View a public resume (no auth required) |
| Method | Endpoint | Auth | Description |
|---|---|---|---|
POST |
/api/ai/enhance-pro-sum |
β | AI-enhance professional summary |
POST |
/api/ai/enhance-job-desc |
β | AI-enhance a job description |
POST |
/api/ai/upload-resume |
β | Upload PDF and auto-extract resume data |
{
name: String,
email: String, // unique
password: String, // bcrypt hashed
createdAt, updatedAt
}{
userId: ObjectId,
title: String,
public: Boolean,
template: String, // "classic" | "modern" | "minimal" | "minimal-image"
accent_color: String,
professional_summary: String,
skills: [String],
personal_info: {
image, full_name, profession, email, phone, location, linkedin, website
},
experience: [{
company, position, start_date, end_date, description, is_current
}],
education: [{
institution, degree, field, graduation_date, gpa
}],
project: [{
name, type, description
}],
createdAt, updatedAt
}- Push your code to GitHub.
- Import the repo in Vercel and set the Root Directory to
client. - Add environment variable
VITE_BASE_URLpointing to your deployed backend URL. - Deploy.
- Deploy the
server/directory to your chosen platform. - Add all server environment variables from
server/.env. - Set the start command to
npm start. - Update the CORS
allowedOriginsinserver/server.jsto include your frontend URL.
- Create a free cluster at MongoDB Atlas.
- Whitelist your backend server IP.
- Copy the connection string into
MONGODB_URI.
- OpenAI API / LLM-based text generation
- Users enter basic information such as education, skills, and experience.
- The AI generates professional resume bullet points and summaries.
- The system formats the data into ATS-friendly resume templates.
- Users can edit sections and export the final resume as a PDF.
Made with β€οΈ by Aryan Ghugare