Skip to content

ztickm/hammidu-resume

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Hammidu Resume - JSON Resume to PDF

A Bun-based monorepo for converting JSON Resume format to PDF with the original JSON resume as embedded metadata.

Disclaimer

Parts of this project are written with AI tools. Do with that information what you will.

Features

  • Complete round-trip: JSON → HTML → PDF → JSON
  • Clean separation: Library doesn't depend on heavy browser tools
  • Type-safe: Full TypeScript support with JSON Resume schema
  • Metadata embedding: Original JSON stored as PDF attachment and extractable
  • Professional layouts: Harvard CV format included
  • Extensible: Easy to add new templates and formats

Architecture

This is a monorepo containing four packages:

📦 packages/xebec-render

Lightweight library for generating HTML from JSON Resume data.

  • ✅ No browser dependencies
  • ✅ Handlebars templating
  • ✅ Harvard CV format ( more later, please feel free to contribute)
  • ✅ Type-safe with TypeScript

📦 packages/flouka-studio

PDF generator using Puppeteer to convert HTML to PDF, plus a web interface.

  • ✅ High-quality PDF rendering
  • ✅ Embeds JSON Resume as PDF attachment
  • ✅ Full CSS support
  • ✅ Web UI with live preview

📦 packages/validator

JSON Resume schema validator using AJV.

  • ✅ Validates against official JSON Resume schema
  • ✅ Detailed error messages with paths
  • ✅ CLI tool and programmatic API
  • ✅ Format validation (email, URI, dates)

📦 packages/extractor

Extract JSON Resume metadata from PDF files.

  • ✅ Extracts embedded JSON from PDFs generated by flouka-studio
  • ✅ Handles compressed streams (FlateDecode)
  • ✅ Type-safe extraction
  • ✅ File path or byte array input

Getting Started

# Install dependencies for all packages
bun install

Quick Start

You can run all package commands from the root directory, for example:

You can start the web interface (flouka-studio) perfect for end users by running the following command on your terminal

bun run web

Available Scripts

Validator:

  • bun run validate - Run comprehensive validator test suite
  • bun run validator:example - Same as above
  • bun run validator:validate - Validate a JSON file (with path argument)

Xebec Render (HTML Generator):

  • bun run example - Generate HTML from example resume
  • bun run xebec:example - Same as above
  • bun run xebec:test - Test validator integration

Flouka Studio (PDF Generator & Web UI):

  • bun run web - Start web interface at http://localhost:3001
  • bun run flouka:web - Same as above
  • bun run flouka:example - Generate PDF from example resume

Extractor (PDF to JSON):

  • bun run extract - Extract JSON Resume from generated PDF
  • bun run extractor:example - Same as above

Round-Trip Test:

  • bun run roundtrip - Test complete workflow: JSON → HTML → PDF → JSON

Manual Package Usage

If you prefer working within each package:

# Validate a JSON Resume file
cd packages/validator
bun cli.ts ../../resumes/example_input.json

# Try the xebec-render library (HTML generation only)
cd packages/xebec-render
bun example.ts

# Try the flouka-studio PDF generator
cd packages/flouka-studio
bun example.ts

# Start the web interface
cd packages/flouka-studio
bun --watch web-server.ts
# Open http://localhost:3001 in your browser

Project Structure

hammidu-resume/
├── packages/
│   ├── xebec-render/      # HTML rendering library (lightweight)
│   │   ├── src/
│   │   │   ├── index.ts
│   │   │   ├── html-generator.ts
│   │   │   ├── helpers.ts
│   │   │   └── templates/
│   │   │       └── harvard-configurable.hbs
│   │   └── example.ts
│   │
│   ├── flouka-studio/     # PDF generation + Web UI
│   │   ├── src/
│   │   │   └── index.ts
│   │   ├── public/
│   │   │   └── index.html
│   │   ├── web-server.ts
│   │   └── example.ts
│   │
│   ├── validator/         # JSON Resume validator
│   │   ├── src/
│   │   │   └── index.ts
│   │   ├── cli.ts
│   │   └── example.ts
│   │
│   └── extractor/         # PDF to JSON extractor
│       ├── src/
│       │   └── index.ts
│       └── example.ts
│
├── package.json         # Monorepo root
└── README.md

Development

Built with Bun

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published