John Arnold Villafania — Software Engineer
This is my official CV. It is also the app that built it.
What you see on the front page is my actual resume, rendered live from a JSON file. Edit the code, and it becomes yours: same typography, same pagination, same print-quality ATS output. The “Save as PDF” button isn’t serving a static file—it’s executing the system I built.
How to use it
- Edit the JSON on the left. The schema autocompletes fields and flags malformed code—the preview keeps your last valid render while you type.
- Style it in the theme.json tab. Adjust paper size, margins, typefaces, accent colours, and section order, or start with presets like Broadsheet or Grid.
- Save as PDF. The system print dialog opens using “Save as PDF”. Because it uses pure browser rendering, the text remains 100% selectable and ATS-friendly—no rasterized images.
Your data stays yours
There is no server, database, or user accounts. Nothing you type leaves your browser—your edits live strictly in the page’s URL fragment and local storage. If you share a link, the URL itself carries the resume data (the app will explicitly prompt you before copying).
How it’s built
- Core: React and Vite, prerendered to static HTML so the CV remains readable even with JavaScript disabled.
- Layout & PDF Engine: CSS Paged Media polyfilled by Paged.js in the browser, leveraging the browser’s native print engine for crisp, selectable text.
- Validation & DX: JSON validated against a fixed schema via Ajv, integrated directly into the Monaco Editor for live autocomplete and inline syntax error checking.
- Infrastructure: Self-hosted web fonts served as static assets over a global CDN.