6.9 KiB
title
| title |
|---|
| Resume Builder |
Resume Builder (hereinafter the "Application") is a static site generator that transforms a YAML or JSON resume source into a styled HTML resume website, along with downloadable formats. It is designed for easy customization and deployment, using TypeScript for parsing and rendering, and outputs a ready-to-host static site.
1. User Documentation
The Resume Builder generates a professional, accessible resume website from structured data. The live website displays:
Features
- Responsive Design: Mobile-friendly layout that works on all devices
- Print-Optimized: Print or save as PDF with optimized styling
- Multiple Formats: Download resume data in YAML or JSON format
- Professional Sections: Employment, volunteer work, education, certifications, projects, and publications
- Navigation Links: Quick jump links to different resume sections
- Contact Integration: Direct links to testimonials and contact forms
Using the Resume Website
- Browse Sections: Use the navigation links to jump to specific sections (Employment, Education, etc.)
- Download Data: Click "YAML" or "JSON" links to download the resume in structured formats
- Print/Save PDF: Click the "print" link to open browser print dialog for PDF saving
- Contact: Use the "submit your own request" link to contact for opportunities
Resume Sections
- Employment: Current and past positions with company details, dates, and descriptions
- Volunteer Work: Community involvement and volunteer positions
- Education: Academic background and certifications
- Certifications: Professional certifications and credentials
- Projects: Notable projects and achievements
- Publications: Articles, papers, and published works
2. Technical Documentation
The Resume Builder is a Node.js-based static site generator that transforms YAML resume data into a complete website.
Architecture
- TypeScript Parser:
src/parse.ts- Main build script that processes YAML data - Data Schema:
src/interfaces/resume.ts- TypeScript interfaces defining resume structure - Source Data:
src/source.yaml- YAML file containing all resume information - Static Assets:
src/static/- CSS styles and JavaScript for the generated site - Output:
site/- Generated HTML, CSS, JS, YAML, and JSON files
Requirements
- Node.js (latest LTS recommended)
- pnpm package manager
- TypeScript support via tsx
Installation & Setup
# Clone the repository
git clone <repository-url>
cd resume
# Install dependencies
pnpm install
# Build the site
pnpm run build
Available Scripts
pnpm run build- Generate the static site from YAML datapnpm run lint- Run ESLint for code qualitypnpm run spelling- Check spelling in source.yamlpnpm run test- Run validation tests
Data Structure
The resume data follows this schema:
name: Full namecontact: Contact informationsummary: Professional summaryemployment[]: Array of employment positionsvolunteer[]: Array of volunteer positionseducation[]: Array of educational backgroundcertifications[]: Array of certificationsprojects[]: Array of notable projectspublications[]: Array of publications
Customization
- Content: Edit
src/source.yamlwith your resume data - Styling: Modify
src/static/style.cssfor visual customization - Structure: Update
src/parse.tsto change HTML generation - Types: Extend
src/interfaces/resume.tsfor new data fields
Deployment
The site/ directory contains all files needed for static hosting:
index.html- Main resume webpagestyle.css- Stylingdates.js- JavaScript for date handlingresume.yaml- YAML format downloadresume.json- JSON format download
Deploy to any static hosting service (Netlify, Vercel, GitHub Pages, etc.)
3. Legal Documentation
License
This software is licensed under Naomi's Public License. Copyright held by Naomi Carrigan.
For complete legal terms, refer to:
- Global Software License
- LICENSE.md in the repository
- PRIVACY.md for privacy policy
- TERMS.md for terms of service
- SECURITY.md for security policies
Data Privacy
The resume website is a static site that:
- Does not collect user data
- Does not use cookies or tracking
- Does not store personal information
- Contains only publicly available professional information
Third-Party Services
The generated website may include links to external services:
- Testimonials platform (testimonials.nhcarrigan.com)
- Contact forms (forms.nhcarrigan.com)
- External headers/scripts (cdn.nhcarrigan.com)
Users should review the privacy policies of any external services they choose to interact with.
4. Contributing Documentation
Getting Started
- Fork the repository
- Clone your fork locally
- Install dependencies:
pnpm install - Make your changes
- Test your changes:
pnpm run build && pnpm run test && pnpm run lint && pnpm run spelling - Submit a pull request
Contribution Guidelines
- Read the Code of Conduct before participating
- Follow the existing code style and conventions
- Only modify
src/source.yamlfor content changes - Do not commit files in the
site/directory (auto-generated) - Ensure all tests pass before submitting
- Provide clear commit messages and PR descriptions
Development Workflow
- Content Updates: Edit
src/source.yamlwith new resume information - Code Changes: Modify TypeScript files in
src/directory - Styling: Update CSS in
src/static/style.css - Testing: Add tests in
test/directory using Vitest - Build: Run
pnpm run buildto generate the site
Quality Checks
All contributions must pass:
- ESLint: Code quality and style checking
- Spelling: cspell validation of YAML content
- Tests: Vitest validation of data structure
- Build: Successful site generation
Reporting Issues
- Use GitHub Issues for bugs and feature requests
- Provide detailed reproduction steps for bugs
- Include relevant error messages and logs
- Tag issues appropriately (bug, enhancement, documentation)
Contact
- Chat Server for real-time discussion
- Email: contact@nhcarrigan.com for direct communication
- GitHub Issues for project-specific discussions
Project Structure
src/
├── parse.ts # Main build script
├── source.yaml # Resume data (edit this)
├── interfaces/
│ └── resume.ts # TypeScript type definitions
└── static/
├── style.css # Website styling
└── dates.js # Date handling JavaScript
test/
└── validate.spec.ts # Validation tests
site/ # Generated output (do not edit)
├── index.html
├── style.css
├── dates.js
├── resume.yaml
└── resume.json