Naomi's Resume
Naomiβs Resume (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 Application 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 repositorygit clone <repository-url>cd resume
# Install dependenciespnpm install
# Build the sitepnpm 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.yaml
with your resume data - Styling: Modify
src/static/style.css
for visual customization - Structure: Update
src/parse.ts
to change HTML generation - Types: Extend
src/interfaces/resume.ts
for 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.yaml
for 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.yaml
with 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 build
to 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: [email protected] 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