Files
resume/DOCS.md
naomi 88c991733f
Node.js CI / Lint and Test (push) Failing after 26s
feat: migrate to external site
2025-09-23 11:12:53 -07:00

187 lines
6.9 KiB
Markdown

---
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
1. **Browse Sections**: Use the navigation links to jump to specific sections (Employment, Education, etc.)
2. **Download Data**: Click "YAML" or "JSON" links to download the resume in structured formats
3. **Print/Save PDF**: Click the "print" link to open browser print dialog for PDF saving
4. **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
```bash
# 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 data
- `pnpm run lint` - Run ESLint for code quality
- `pnpm run spelling` - Check spelling in source.yaml
- `pnpm run test` - Run validation tests
### Data Structure
The resume data follows this schema:
- `name`: Full name
- `contact`: Contact information
- `summary`: Professional summary
- `employment[]`: Array of employment positions
- `volunteer[]`: Array of volunteer positions
- `education[]`: Array of educational background
- `certifications[]`: Array of certifications
- `projects[]`: Array of notable projects
- `publications[]`: Array of publications
### Customization
1. **Content**: Edit `src/source.yaml` with your resume data
2. **Styling**: Modify `src/static/style.css` for visual customization
3. **Structure**: Update `src/parse.ts` to change HTML generation
4. **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 webpage
- `style.css` - Styling
- `dates.js` - JavaScript for date handling
- `resume.yaml` - YAML format download
- `resume.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](https://docs.nhcarrigan.com/#/license)
- [LICENSE.md](LICENSE.md) in the repository
- [PRIVACY.md](PRIVACY.md) for privacy policy
- [TERMS.md](TERMS.md) for terms of service
- [SECURITY.md](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
1. Fork the repository
2. Clone your fork locally
3. Install dependencies: `pnpm install`
4. Make your changes
5. Test your changes: `pnpm run build && pnpm run test && pnpm run lint && pnpm run spelling`
6. Submit a pull request
### Contribution Guidelines
- Read the [Code of Conduct](CODE_OF_CONDUCT.md) 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
1. **Content Updates**: Edit `src/source.yaml` with new resume information
2. **Code Changes**: Modify TypeScript files in `src/` directory
3. **Styling**: Update CSS in `src/static/style.css`
4. **Testing**: Add tests in `test/` directory using Vitest
5. **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](http://chat.nhcarrigan.com) 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
```