# Personal Website My personal website built with Astro and Preact! ## Features - **Resume Management** - **Blog Posts** - **Projects** - **Talks & Presentations** - **Terminal View** ## Resume Configuration The resume system supports multiple sections that can be enabled, disabled, and customized. ### Available Resume Sections | Section | Required Fields | |---------|-----------------| | **basics** | `name`, `email`, `profiles` | | **summary** | `content` | | **experience** | `company`, `position`, `location`, `date`, `description` | | **education** | `institution`, `degree`, `field`, `date` | | **skills** | `name`, `level` (1-5) | | **volunteer** | `organization`, `position`, `date` | | **awards** | `title`, `organization`, `date` | | **profiles** | `network`, `username`, `url` | ### Section Configuration Each section can be configured in `src/config/data.ts`: ```typescript export const resumeConfig: ResumeConfig = { tomlFile: "/files/resume.toml", sections: { summary: { title: "Professional Summary", enabled: true, }, experience: { title: "Work Experience", enabled: true, }, awards: { title: "Awards & Recognition", enabled: true, }, // ... other sections }, }; ``` ### Resume Data Format (TOML) Create a `resume.toml` file in the `public/files/` directory: ```toml [basics] name = "Your Name" email = "your.email@example.com" [[basics.profiles]] network = "GitHub" username = "yourusername" url = "https://github.com/yourusername" [[basics.profiles]] network = "LinkedIn" username = "yourname" url = "https://linkedin.com/in/yourname" [summary] content = "Your professional summary here..." [[experience]] company = "Company Name" position = "Job Title" location = "City, State" date = "2020 - Present" description = [ "Achievement or responsibility 1", "Achievement or responsibility 2" ] url = "https://company.com" [[education]] institution = "University Name" degree = "Bachelor of Science" field = "Computer Science" date = "2016 - 2020" details = [ "Relevant coursework or achievements" ] [[skills]] name = "JavaScript" level = 4 [[skills]] name = "Python" level = 5 [[volunteer]] organization = "Organization Name" position = "Volunteer Position" date = "2019 - Present" [[awards]] title = "Award Title" organization = "Awarding Organization" date = "2023" description = "Brief description of the award" ``` ### Section Field Details #### Skills Section - `level`: Integer from 1-5 representing proficiency level - Displays as progress bars with visual indicators #### Experience Section - `description`: Array of strings for bullet points - `url`: Optional company website link #### Education Section - `details`: Optional array of additional information (coursework, achievements, etc.) #### Awards Section - `description`: Optional additional details about the award #### Profiles Section - `network`: Used for icon selection (GitHub, LinkedIn, etc.) - Icons automatically selected based on network name ## Usage 1. **Configure Resume**: Edit `src/config/data.ts` to enable/disable sections 2. **Add Resume Data**: Create `public/files/resume.toml` with your information 3. **View Resume**: Navigate to `/resume` on your site 4. **Generate PDF**: Click "Download Resume" button for downloadable PDF ## Development ```bash # Install dependencies npm install # Start development server npm run dev # Build for production npm run build ``` ## Resume PDF Generation The system automatically generates PDFs using Puppeteer with: - Optimized layout for A4 paper - Print-friendly styling - Consistent formatting across sections - Proper page breaks and margins