Back to Projects
JobFolio
UpgradingReactNode.jsExpress.js+4 more

JobFolio

A resume builder platform focused on flexible resume structure, reliable PDF generation, and scalable backend design.

Timeline

1.5 months

Role

Full Stack Developer

Team

Solo

Status
Upgrading

Technology Stack

React
Node.js
Express.js
MongoDB
Context API
Tailwind CSS
Puppeteer

Key Challenges

  • Reliable PDF generation
  • Handling responsive resume layouts
  • Backend flexibility for sections
  • Deployment issues with database connections
  • Balancing UX simplicity with customization

Key Learnings

  • Server-side PDF rendering
  • Tradeoffs between client and server rendering
  • Backend schema design for flexible data
  • Deployment debugging
  • Product-level thinking

JobFolio: Resume Builder Platform

Overview

JobFolio is a resume builder platform designed to give users a smooth, single-page resume creation experience with live preview and downloadable PDFs. Unlike rigid template-based tools, JobFolio focuses on flexibility, allowing resumes to evolve beyond fixed sections and layouts.

The project is actively evolving and serves as both a product experiment and a deep dive into real-world full-stack challenges.


What Users Can Do

  • Create Resumes in One Flow: Fill all resume details on a single page with live preview.
  • Download PDFs: Export resumes as professional PDFs.
  • Edit Later: Update resumes without rebuilding from scratch.
  • Use Clean Templates: Simple, readable layouts focused on clarity.
  • Responsive Experience: Works smoothly across devices.

Why I Built This

I wanted to understand how modern resume builders work under the hood and why many of them feel restrictive.

Specifically:

  • Most tools lock users into predefined sections.
  • Customization often breaks formatting.
  • PDF downloads are unreliable or poorly rendered.
  • Many platforms prioritize visuals over structure.

JobFolio started as a simple resume builder but quickly evolved into an exploration of flexible data modeling, rendering strategies, and real-world deployment challenges.


PDF Generation & Puppeteer Challenges

Initially, PDF generation was handled on the client side. While this worked for basic cases, it quickly caused issues such as inconsistent layouts, font rendering problems, and browser-dependent bugs.

To fix this, I moved PDF generation to the backend using Puppeteer, which significantly improved rendering accuracy and consistency. With Puppeteer, resumes were rendered using a controlled Chromium environment, ensuring predictable and professional PDF output.

However, this introduced a new challenge during deployment. Puppeteer relies on its own Chromium binary to render pages, and in the deployment environment, Chromium was not available by default. This caused PDF generation to fail even though everything worked correctly in local development.


Deployment Challenges & Learnings

Deploying the backend exposed issues that were not visible during local development.

Since Puppeteer requires Chromium to function, the deployment environment failed to locate the required binary. To solve this, I containerized the backend using Docker, ensuring a consistent runtime environment with all necessary dependencies, including Chromium. This made Puppeteer-based PDF generation reliable across environments.

In parallel, I encountered MongoDB connection errors in production. After investigation, the issue was traced back to a Mongoose package version bug, not configuration. Downgrading Mongoose to a stable version resolved the problem.

These issues reinforced the importance of:

  • Environment parity between local and production
  • Understanding library-level issues, not just configuration errors
  • Using containerization to control complex runtime dependencies

Backend Evolution (Ongoing)

With PDF generation stabilized and deployment issues resolved, the backend is now being reworked to support a more flexible and future-proof resume structure.

Current focus areas include:

  • Designing schemas that support fully dynamic resume sections
  • Allowing custom ordering and composition of sections
  • Avoiding rigid data models that limit customization

The long-term goal is to position JobFolio as a flexible alternative to FlowCV, focusing on structure and extensibility rather than locking users into predefined templates.


Tech Stack

  • React
  • Node.js
  • Express.js
  • MongoDB
  • Context API
  • Tailwind CSS
  • Puppeteer

Key Takeaways

  • PDF generation is best handled server-side for consistency.
  • Puppeteer introduces deployment complexity due to Chromium dependencies.
  • Docker helps eliminate environment-specific issues.
  • Not all production bugs are configuration-related — some are library-level.
  • Flexible backend design matters more than visual polish in the long run.

Future Plans

  • Finalize flexible backend schema for resume sections.
  • Improve PDF performance and reliability.
  • Add multiple template variants.
  • Position JobFolio as a practical alternative to FlowCV.

Customized & developed by Aakash Gupta
© 2026. All rights reserved