# 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"
```
