A markdown-to-PDF and Word converter with live preview, customizable themes, ATS optimization, and a modern web interface.
CVCraft transforms your markdown resume into beautifully formatted PDFs and Word documents (.docx) with real-time preview, dynamic theming, and professional styling optimized for Applicant Tracking Systems (ATS). Built with TypeScript and modern web technologies.
- Live markdown editor
- Real-time HTML preview - See changes instantly as you type w/ ATS warnings
- Theme switching - Switch between themes with live preview
- Auto-save & restore - Never lose your work with localStorage persistence
- Dynamic theme discovery - Automatically detects custom
theme-*.cssfiles - Real-time color customization - Live color picker with instant preview
- User-extensible themes - Drop in your own CSS theme files
- Modern nested CSS - Clean, maintainable theme structure
- High-quality PDFs using Puppeteer with system Chrome
- Word documents (.docx) with perfect font consistency and ATS optimization
- Theme-consistent output - Both PDF and Word exports match web preview exactly
- Custom color support - Color customizations apply to all export formats
- Personalized filenames - Auto-generated from resume metadata
- Multiple formats - Letter, A4, and custom page sizes
- ATS-optimized theme - Clean, minimal styling for maximum compatibility
- Consistent fonts - Theme-based fonts applied throughout Word documents
- Semantic HTML structure - Proper heading hierarchy and content organization
- Clean Word export - No CSS artifacts or formatting issues in .docx files
- TypeScript - Full type safety and modern development
- Comprehensive testing - 44+ passing tests with decent coverage
- Modern tooling - Vite, Bun, ESM modules
- CLI & Web Interface - Use however you prefer
CVCraft works with any package manager:
# npm
npm install -g cvcraft
# yarn
yarn global add cvcraft
# pnpm
pnpm add -g cvcraft
# bun (recommended for performance)
bun add -g cvcraftStart the modern web interface with live preview:
# Using bun (recommended)
bun run web
# Using npm/yarn/pnpm - replace 'bunx' with 'npx'/'yarn dlx'/'pnpm dlx'
npm run webThen open http://localhost:5173 for the full experience:
- ✅ Live markdown editing with preview
- ✅ Real-time theme switching and customization
- ✅ Instant PDF and Word document generation and download
- ✅ ATS compatibility warnings and optimization tips
- ✅ Auto-save and restore functionality
# Convert markdown to PDF
cvcraft convert resume.md resume.pdf
# Convert markdown to Word document (.docx)
cvcraft convert resume.md resume.docx --format word
# Use specific theme (works for both PDF and Word)
cvcraft convert resume.md resume.pdf --theme ats
cvcraft convert resume.md resume.docx --format word --theme ats
# Custom format and margins (PDF only)
cvcraft convert resume.md resume.pdf --format Letter --margin-top 15mm
# List available themes
cvcraft themes
# Create sample resume template
cvcraft init my-resume.mdCVCraft features a robust CSS-based theme system:
- Modern - Clean, contemporary design with blue accents and gradients
- Classic - Traditional serif fonts with professional styling
- Minimal - Simple, clean layout with maximum readability
- ATS - Optimized for Applicant Tracking Systems with maximum compatibility
Create your own themes by adding CSS files to the themes/ folder:
/* themes/theme-mycustomtheme.css */
:root {
--theme-primary: #1a365d;
--theme-secondary: #2d3748;
--theme-background: #ffffff;
/* ... more variables */
}
.header {
h1 {
font-size: 2.5rem;
color: var(--theme-primary);
}
}Use the web interface to customize theme colors in real-time:
- Live color picker with instant preview
- Custom colors apply to both web preview and PDF export
- Settings automatically saved to localStorage
# Clone the repository
git clone https://github.com/jackkeller/cvcraft.git
cd cvcraft
# Install dependencies (we recommend bun for performance)
bun install
# or: npm install / yarn / pnpm install
# Start development servers
bun run web # Web interface + API server
bun run api # API server only
bun run web:dev # Vite dev server only
# Run tests
bun run test # Watch mode
bun run test:run # Single run
bun run coverage # With coverage report
# Build for production
bun run build # Build everything
bun run build:lib # Build library only
bun run build:web # Build web interface onlyFor development, we use Bun for performance, but you can use any package manager:
# Replace 'bunx' with your preferred tool:
# npm users: replace 'bunx' with 'npx'
# yarn users: replace 'bunx' with 'yarn dlx'
# pnpm users: replace 'bunx' with 'pnpm dlx'
# Example for pnpm users:
"web:dev": "pnpm dlx vite"
"web:build": "pnpm dlx vite build"CVCraft is built with modern technologies:
- Frontend: TypeScript + Vite + Vanilla JavaScript
- Backend: Node.js + Express + TypeScript
- PDF Generation: Puppeteer-core with system Chrome
- Word Export: docx library with custom HTML parser for clean .docx output
- Theme System: CSS-based with CSS variables and dynamic discovery
- ATS Optimization: Semantic HTML structure and font consistency
- Testing: Vitest with comprehensive coverage
- Build: TypeScript compiler + Vite bundler
cvcraft/
├── src/ # Core library code
│ ├── api-server.ts # Express API server
│ ├── cli.ts # Command-line interface
│ ├── config.ts # Configuration management
│ ├── converter.ts # Format conversion utilities
│ ├── css-theme-manager.ts # Dynamic theme discovery
│ ├── html-renderer.ts # HTML generation
│ ├── parser.ts # Markdown parser
│ ├── renderer.ts # PDF renderer (Puppeteer)
│ ├── themes.ts # Theme management
│ ├── types.ts # TypeScript type definitions
│ ├── word-converter.ts # Word document conversion
│ ├── word-renderer.ts # Word document generation
│ └── index.ts # Library exports
├── web/ # Web interface
│ ├── main.ts # Web app logic
│ ├── index.html # Web app HTML
│ ├── styles.css # Web app styles
│ ├── ats-warnings.css # ATS warnings styles
├── themes/ # CSS theme files
│ ├── theme-modern.css # Modern professional theme
│ ├── theme-classic.css # Traditional serif theme
│ ├── theme-minimal.css # Clean minimal theme
│ └── theme-ats.css # ATS-optimized theme
├── samples/ # Example files
│ ├── resume-sample.md # Sample resume content
│ └── theme-sample.css # Theme template for users
├── tests/ # Test suite
├── dist/ # Built output
└── coverage/ # Test coverage reports- TypeScript - All code should be properly typed
- Tests - Add tests for new features
- CSS Themes - Follow existing theme structure for new themes
- Documentation - Update README for significant changes
---
name: 'Jane Smith'
email: '[email protected]'
phone: '555-123-4567'
website: 'https://janesmith.dev'
---
## Experience
**Senior Software Engineer** | Tech Corp | 2021-2024
- Led development of microservices architecture
- Mentored junior developers and conducted code reviews
- Improved system performance by 40%
**Software Engineer** | StartupCo | 2019-2021
- Built responsive web applications using React and Node.js
- Collaborated with design team on user experience improvements
## Skills
- **Languages**: JavaScript, TypeScript, Python, Go
- **Frameworks**: React, Node.js, Express, Next.js
- **Tools**: Docker, Kubernetes, AWS, GitExperience blocks use single line breaks intentionally to improve export formatting in both PDF and Word documents. This ensures proper spacing and prevents awkward page breaks or formatting issues in exported files. Each job experience should be separated by a single blank line for optimal results.
PDF generation fails:
- Ensure Chrome/Chromium is installed on your system
- Check that port 3001 is available for the API server
Themes not loading:
- Verify theme files are in the
themes/folder - Check that theme files follow the
theme-*.cssnaming convention
Web interface not starting:
- Ensure ports 5173 and 3001 are available
- Try
bun run apiseparately to isolate issues
MIT License - see LICENSE file for details.
Built with ❤️ using:
- Puppeteer for PDF generation
- Vite for modern build tooling
- Vitest for testing
- Bun for fast package management
Made with ❤️ by developers, for developers. Create beautiful resumes with the power of markdown and modern web technologies.