How arpitbuilds/resumeforge works
Purpose and Entry Points
ResumeForge is a full-stack resume-building platform with AI-assisted resume analysis, job matching, PDF import/export, and tracked sharing. The React/Vite client starts at client/src/main.jsx and routes through client/src/App.jsx; the Express API and Socket.io server start at server/server.js, with realtime wiring in server/socket.js.
Client Application Shell and State
The frontend is a React single-page application. Shared layout/navigation and page-level flows are organized in client/src/pages/Layout.jsx, client/src/pages/ResumeBuilder.jsx, client/src/pages/Preview.jsx, client/src/pages/JobHunter.jsx, and client/src/pages/Dashboard.jsx. Redux holds authenticated-user state in client/src/app/store.js and client/src/app/features/authSlice.js; API base configuration is centralized in client/src/configs/api.js.
Resume Authoring and Rendering Pipeline
Resume-builder forms collect structured personal, experience, education, skills, projects, certification, and summary data. The builder assembles this into a live rendered resume through client/src/components/ResumePreview.jsx. Template selection switches among presentation/export variants in client/src/components/TemplateSelector.jsx and client/src/components/templates/ClassicTemplate.jsx, client/src/components/templates/ModernTemplate.jsx, client/src/components/templates/MinimalTemplate.jsx, and client/src/components/templates/MinimalImageTemplate.jsx.
Resume Persistence and Media Boundary
The backend exposes resume operations through server/routes/resumeRoutes.js, delegated to server/controllers/resumeController.js and persisted via server/models/Resume.js. File upload handling is configured at server/configs/multer.js; profile/image hosting is an external ImageKit boundary configured by server/configs/imageKit.js. This supports PDF resume ingestion and hosted profile imagery without treating the frontend as the storage authority.
Identity and Authorization
Registration/login requests enter via server/routes/userRoutes.js and server/controllers/userController.js. User records are represented by server/models/User.js; protected API paths use JWT validation in server/middlewares/authMiddleware.js. The browser authentication lifecycle is reflected in Redux rather than embedded independently in each page.
AI Analysis and Job-Matching Services
AI endpoints are separated under server/routes/aiRoutes.js and executed by server/controllers/aiController.js, using Google Gemini configuration in server/configs/ai.js. Client interaction surfaces include client/src/components/ATSAnalyzerModal.jsx and client/src/components/JobMatcherModal.jsx. The intended flow sends current resume content, optionally paired with a pasted job description, to the server-side AI boundary and returns ATS scores, missing keywords/skills, and improvement suggestions.
Job Tracking, Sharing, and Notifications
Job-application tracking is modeled independently in server/models/JobApplication.js, with API flow through server/routes/jobRoutes.js and server/controllers/jobController.js. Sharing/referral-link UI is in client/src/components/ShareModal.jsx. Resume-view events create persisted notification history using server/models/Notification.js and server/controllers/notificationController.js, while server/socket.js delivers live Socket.io notifications to online users.
Runtime and Infrastructure
The client runs as a Vite React application and is configured for Vercel deployment in client/vercel.json. The server is Node.js/Express with MongoDB/Mongoose configured in server/configs/db.js. Material external dependencies are MongoDB, Google Gemini, ImageKit, and Socket.io’s client/server transport; credentials and endpoint settings are environment-driven through client/.env and server/.env-example.
Components 19
React Client
- Vite entry
client/src/main.jsx - App routes
client/src/App.jsx - App flows · Layout, builder, preview, job hunter, and dashboard.
client/src/pages/ResumeBuilder.jsx - Auth state
client/src/app/store.js - API configuration
client/src/configs/api.js - Live resume renderer
client/src/components/ResumePreview.jsx - Resume templates · Selected export and preview layouts.
client/src/components/TemplateSelector.jsx - AI analysis UI · ATS analysis and job matching inputs/results.
client/src/components/ATSAnalyzerModal.jsx - Sharing UI
client/src/components/ShareModal.jsx
Express API
- API server
server/server.js - Identity API · Registration and login operations.
server/routes/userRoutes.js - JWT authorization
server/middlewares/authMiddleware.js - Resume API · Resume CRUD and ingestion operations.
server/routes/resumeRoutes.js - AI API · Server-side Gemini analysis boundary.
server/routes/aiRoutes.js - Job tracking API
server/routes/jobRoutes.js - Notification delivery · Persists resume-view events and pushes online updates.
server/socket.js
Persistence & Services
- MongoDB · Users, resumes, job applications, and notifications.
server/configs/db.js - ImageKit · Hosted profile imagery and upload boundary.
server/configs/imageKit.js - Google Gemini
server/configs/ai.js
Connections 24
- Vite entry → App routes: boots
- App routes → App flows: routes to
- App flows → Auth state: reads auth state
- App flows → Live resume renderer: renders draft
- Live resume renderer → Resume templates: uses selected layout
- App flows → AI analysis UI: opens
- App flows → Sharing UI: opens
- App flows → API configuration: uses
- API configuration → API server: HTTP API calls
- API server → Identity API: mounts
- API server → Resume API: mounts
- API server → AI API: mounts
- API server → Job tracking API: mounts
- JWT authorization → Resume API: protects
- JWT authorization → Job tracking API: protects
- Identity API → MongoDB: user records
- Resume API → MongoDB: resume records
- Resume API → ImageKit: uploads media
- AI analysis UI → AI API: resume and job content
- AI API → Google Gemini: analysis prompts
- Job tracking API → MongoDB: application records
- Notification delivery → MongoDB: notification history
- API server → Notification delivery: realtime wiring
- Resume API → Notification delivery: resume-view events