generated from nhcarrigan/template
187 lines
6.9 KiB
Markdown
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
|
|
```
|