About This Project

A private CV/résumé management system I built for my own use — not a public tool, just software to create, edit, and securely export my own CVs. It covers the full lifecycle: a structured multi-section editor, digitally signed and verifiable PDF export, and version history across multiple drafts, all backed by a proper account system.

The frontend is a Next.js/React application; the backend is a Node.js/Express REST API backed by PostgreSQL. PDFs are rendered server-side so the exported file matches the on-screen preview exactly.

Key Highlights

  • JWT-based authentication with OTP email verification on every login, plus account activation and password reset flows
  • An 8-section CV editor (personal info, summary, experience, education, skills, projects, certifications, languages) supporting multiple drafts and versions
  • Server-rendered PDF export via Puppeteer and pdf-lib, so the exported document matches the live preview
  • Digital signing — an uploaded signature image or a hand-drawn signature from an in-browser signature pad, embedded directly into the exported PDF
  • Document verification: each signed PDF embeds a QR code and barcode tied to the CV record, checked on a dedicated verification page
  • Separate user and admin dashboards for account and document management

Challenges & Solutions

Getting the exported PDF to actually match the live preview was the hardest part: Puppeteer renders the same HTML/CSS the browser does, but page breaks, fonts, and the embedded signature, QR code, barcode, and watermark all had to be positioned correctly in the print layout rather than just the on-screen one, which took several iterations to get right. Layering an OTP step on top of standard JWT authentication added an extra round trip — an email code before the session is issued — that had to be handled cleanly across both the API and the Next.js frontend without breaking the normal login flow.

Project Info

  • Category: Full-Stack Web App
  • Year: 2026
  • Status: Completed

Technologies Used

Next.js React Express PostgreSQL Puppeteer pdf-lib JWT Auth