# Personal Website My personal website built with Astro and Preact! ## Features - **Resume** - **Blog Posts** - **Projects** - **Talks** - **Terminal View** ** Nix shell is required for local development! Install it on your OS of choice OR use NixOS! ## Development ```bash # Install dependencies pnpm i # Start development server pnpm shell # Enter nix-shell pnpm dev # Build for production pnpm build ``` ## 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", layout: { leftColumn: ["experience", "volunteer", "awards"], rightColumn: ["skills", "education"], }, sections: { summary: { title: "Professional Summary", enabled: true, }, experience: { title: "Work Experience", enabled: true, }, awards: { title: "Awards & Recognition", enabled: true, }, // ... other sections }, }; ``` ### Layout Configuration The resume layout is fully customizable. You can control which sections appear in which column and their order: ```typescript layout: { leftColumn: ["experience", "volunteer", "awards"], rightColumn: ["skills", "education"], } ``` **Available sections for layout:** - `experience` - Work experience - `education` - Educational background - `skills` - Technical and professional skills - `volunteer` - Volunteer work - `awards` - Awards and recognition **Layout Rules:** - Sections can be placed in either column - Order within each column is determined by array order - Missing sections are automatically excluded - The `summary` section always appears at the top (full width) - The `profiles` section appears in the header area **Example Layouts:** *Skills-focused layout:* ```typescript layout: { leftColumn: ["skills", "education"], rightColumn: ["experience", "awards", "volunteer"], } ``` *Experience-heavy layout:* ```typescript layout: { leftColumn: ["experience"], rightColumn: ["skills", "education", "volunteer", "awards"], } ``` ### 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" ```