A privacy-first, visual A4 resume builder featuring real-time live preview, universal custom sections, drag-and-drop ordering, client-side PDF/DOCX importing, dual ATS-compliant exports, and AI-powered Job Match analysis.
π Live Production Website β’ π¨βπ» Developer Portfolio β’ π GitHub Repository
Naphix Resume is a modern, developer-focused resume builder that treats your resume as a genuine ISO 216 A4 (210 Γ 297mm) document. Instead of filling out disconnected forms and guessing the final layout, the editor features an interactive split-screen workspace with instantaneous live preview synchronization.
All resume drafting, editing, and file importing operate 100% on the client side with browser localStorage, ensuring complete privacy without requiring an account, sign-up, or tracking.
For job seekers optimizing applications, an integrated server-proxied Job Match feature analyzes candidate resumes against target job descriptions using Google Gemini AI, returning compatibility scores, requirement matching, and tailored suggestions.
- β‘ Real-Time Live A4 Preview: Instantaneous typographic feedback on an authentic EB Garamond single-page canvas.
- π Drag-and-Drop Reordering: Smooth drag-and-drop section and entry reordering powered by
@dnd-kitwith touch and pointer sensors. - π§© Universal Custom Section Engine: Create custom sections (Awards, Certifications, Publications, Volunteer Experience, Leadership, etc.) with flexible field schemas.
- π₯ Universal Resume Importer: 10-stage client-side parser that extracts text and structure from existing PDF and Word (
.docx) resumes with multi-column reconstruction and 4-factor confidence scoring. - π€ Gemini AI Job Match: Evaluate your resume against target job postings to receive ATS match scores, requirement breakdowns, experience gaps, and improvement tips.
- π Dual High-Fidelity Exporters:
- Vector PDF: Searchable, ATS-compliant single-page A4 PDF generated via
@react-pdf/renderer. - Native Word DOCX: Native Microsoft Word document with right-aligned tab stops and bullet indentations generated via
docx.
- Vector PDF: Searchable, ATS-compliant single-page A4 PDF generated via
- π± Fully Responsive Design: Desktop split-screen, tablet adaptive switcher, and mobile touch layout.
- π 100% Private & Local: Zero accounts, zero database storage. All resume data remains in your local browser storage.
- βͺ Undo / Redo History: Full 50-step state history with keyboard shortcuts (
Ctrl+Z/Ctrl+Y). - π Complete SEO & Privacy: Pre-rendered landing page metadata, Schema.org JSON-LD structured data, and dynamic
noindexprotection on private editor routes.
- Framework: React 18.3 + TypeScript 5.6
- Bundler & Dev Server: Vite 6.0
- Styling: Tailwind CSS 3.4 + Autoprefixer + PostCSS
- State Management: Zustand 5.0
- Drag & Drop: @dnd-kit (
core,sortable,utilities) - Icons: Lucide React
- PDF Generation: @react-pdf/renderer 4.2
- DOCX Generation: docx 9.1
- PDF Parsing: pdfjs-dist 6.2
- DOCX Parsing: mammoth 1.12
- File Downloads: file-saver 2.0
- Runtime: Node.js Connect Middleware via Vite Plugin
- AI Model: Google Gemini API (
gemini-3.5-flashvia@google/genai 2.17) - Security Middleware: In-memory sliding window rate limiter, IP concurrency guard, payload boundary validator, SHA-256 request fingerprinting cache, and quota circuit breaker.
resumebuilder/
βββ public/ # Static public assets
β βββ landing/screenshots/ # High-resolution showcase & OG images
β βββ robots.txt # Search engine crawler rules
β βββ sitemap.xml # Canonical XML sitemap
βββ src/
β βββ components/ # React UI components
β β βββ editor/ # Resume section accordion forms & custom section modal
β β βββ export/ # Vector PDF & Word DOCX download modal
β β βββ importer/ # Universal Resume Importer modal & staged review
β β βββ jobMatch/ # Gemini Job Match dialog & score visualization
β β βββ preview/ # Live A4 document canvas & zoom toolbar
β β βββ ui/ # Reusable UI primitives (Button, Modal, Input)
β βββ features/ # Domain-driven feature logic
β β βββ importer/ # 10-stage document extraction & parsing engine
β β βββ jobMatch/ # Client API & Zustand store for Job Match
β β βββ resume/ # Core data models, Zustand store, history, utilities
β βββ landing/ # Public marketing landing page & section components
β βββ seo/ # Centralized SEO config, JSON-LD, and usePageSeo hook
β βββ templates/ # Resume layout templates (Developer Standard)
β βββ App.tsx # Client-side router ('/' landing & '/editor')
β βββ main.tsx # React entry point
βββ server/ # Backend API & Security Layer
β βββ config.ts # Security limits, model configuration, and TTL settings
β βββ jobMatchApiHandler.ts # HTTP pipeline with security headers & request tracking
β βββ jobMatchService.ts # Server-side Gemini service with injection defenses
β βββ security/ # Rate limiter, cache, circuit breaker, input validator
βββ scripts/ # Automated validation & test suites
β βββ test_seo.ts # 47-point SEO and metadata test suite
β βββ test_job_match_security.ts# 41-case security & rate limiting test suite
β βββ test_job_match.ts # Job Match API & schema audit suite
β βββ test_universal_importer_comprehensive.ts # 35-case importer corpus suite
βββ docs/ # In-depth technical documentation
βββ AI_USAGE.md # Transparent AI-assisted development log
βββ index.html # Root HTML with SEO metadata and structured data
βββ package.json # Dependencies and scripts
-
Clone the Repository:
git clone https://github.com/naphiertech/resumebuilder.git cd resumebuilder -
Install Dependencies:
npm install
-
Configure Environment Variables: Copy
.env.exampleto.env:cp .env.example .env
-
Start the Development Server:
npm run dev
Open your browser at
http://localhost:5173/.
Create a .env file in the root directory:
# Server-side Google Gemini API Key for Job Match
GEMINI_API_KEY=your_actual_gemini_api_key_here
# Pinned Gemini Model (Default: gemini-3.5-flash)
GEMINI_MODEL=gemini-3.5-flash
# Production Canonical Site URL (Used for SEO, canonical links, and Open Graph)
VITE_SITE_URL=https://naphix-resume.netlify.app| Variable | Description | Required |
|---|---|---|
GEMINI_API_KEY |
Secret key for Google Gemini AI. Stored strictly server-side. | For Job Match |
GEMINI_MODEL |
Pinned model identifier (gemini-3.5-flash). |
No |
VITE_SITE_URL |
Canonical URL for SEO metadata, Open Graph, and sitemaps. | Yes |
Run the automated test suites locally:
# 1. SEO & Structured Data Validation (47 tests)
npx tsx scripts/test_seo.ts
# 2. Job Match Security & Rate Limiting (41 tests)
npx tsx scripts/test_job_match_security.ts
# 3. Gemini Job Match & Schema Audit (22 tests)
npx tsx scripts/test_job_match.ts
# 4. Universal Resume Importer Comprehensive Corpus (43 tests across 35 documents)
npx tsx scripts/test_universal_importer_comprehensive.ts
# 5. Production TypeScript Compilation & Build
npm run buildFor detailed architectural specifications and design guides, explore the documentation:
- ποΈ System Architecture: High-level overview, layers, data flow diagrams, state management, and security boundaries.
- π§© Application Features: In-depth documentation of all user-facing features and workflows.
- π₯ Universal Resume Importer: 10-stage deterministic parsing engine, layout reconstruction, and 4-factor confidence scoring.
- π€ AI Job Match System: Google Gemini integration, multi-tier security hardening, rate limiting, and caching.
- π Document Export Subsystem: Vector PDF (
@react-pdf/renderer) and native Word DOCX (docx) compilation specifications. - π» Developer Guide: Local workflows, coding conventions, project scripts, and testing procedures.
- π Deployment & Hosting: Production deployment architecture, environment variables, and Netlify hosting setup.
- π Architecture Decision Records: Historical ADRs documenting key technical choices and tradeoffs.
- π€ AI Usage Log: Transparent log of AI-assisted engineering, tooling, and milestones.
- Status: Production Ready & Fully Maintained
- Live Deployment: https://naphix-resume.netlify.app/
- Test Suite Status: 100% Passing (153/153 automated test cases)
- Zero Database / Zero Tracking: 100% Client-side resume persistence
Created with passion by Naphier Awalie.
- π Portfolio: naphier-portfolio.vercel.app
- π GitHub: @naphiertech
- πΌ LinkedIn: Awalie Naphier
- π X (Twitter): @bagatata05
- π Facebook: facebook.com/naph05
This project is open-source and available under the MIT License.