Back to archive
Personal project / Local tool

CV Builder

Your resume, your templates, your own device.

My role
Frontend product engineer
Built with
React, TypeScript, Tailwind CSS, Zustand, IndexedDB, Typst
Original project illustration. Not an application screenshot.

The problem

A resume editor needs to make structured career information easy to change while preserving control over the final document. Template flexibility and personal data privacy matter as much as the export button.

My contribution

I built a React and TypeScript editor that transforms structured resume data into Typst source and a PDF preview. Zustand manages application state, and IndexedDB persists the data locally between visits.

Decisions that shaped it

The UI, application services, domain model, templates and persistence are separate concerns. Users can choose the included ATS-friendly or professional template, or upload their own Typst template, without changing how their career information is stored.

Compilation runs through a local endpoint using the system Typst CLI. That is a real deployment constraint: this version needs a local environment and is not presented as a fully browser-hosted compiler. Resume data stays on the user’s machine in this workflow.

Where it stands

This is a working local tool with structured editing, autosave, template selection and PDF generation. A client-side WebAssembly compiler or a production-safe compile service would be a separate delivery step. The emblem here is an illustration, not an application screenshot.

View CV Builder on GitHub