# AGENT.md

This file provides guidance to AI agents like Claude Code (claude.ai/code) when working with code in this repository.

## Project Overview

Blazestar.net is a personal blog/homepage built with **Astro v5** (static site generator). It uses React for interactive components, CSS v4 for styling, and MDX for markdown with JSX support.

## Commands

```bash
npm run dev       # Start dev server at localhost:4321
npm run build     # Build production site to ./dist/
npm run preview   # Preview production build locally
```

Linting and formatting tools (ESLint, Prettier) are available via the Nix dev environment (`nix develop` or direnv). No npm scripts are configured for them.

## Architecture

### Content Collections

Defined in `src/content.config.ts`. Two collections:

- **blog** — Markdown/MDX posts in `src/content/blog/`. Drafts live in `src/content/blog/drafts/` and are excluded from production builds.
- **page** — Static pages in `src/content/page/` (about, values).

Blog post frontmatter: `title` (required), `description` (required), `pubDate`, `updatedDate`, `heroImage`, `tags[]`.

### Routing

- `/` — Home (`src/pages/index.astro`)
- `/blog/` — Post listing (`src/pages/blog/index.astro`)
- `/blog/[slug]/` — Individual posts (`src/pages/blog/[...slug].astro`)
- `/blog/tag/[tag]/` — Tag listing pages (`src/pages/blog/tag/[...tag].astro`)
- `/blog/tag/[tag].rss.xml` — Per-tag RSS feeds
- `/rss.xml` — Main RSS feed

### Key Utilities

- `src/lib/blog.ts` — Functions for fetching/sorting posts and extracting tag data
- `src/consts.ts` — Global constants (`SITE_TITLE`, `SITE_DESCRIPTION`)

### Layouts & Components

- `src/layouts/RootLayout.astro` — Root HTML shell; all pages use this
- `src/layouts/BlogPost.astro` — Layout for individual blog posts (h-entry microformat)
- `src/layouts/BlogList.astro` — Layout for post listing pages
- `src/components/` — Shared components (Header, Footer, Sidebar, etc.)

### Styling

Tailwind CSS v4 via Vite plugin (`@tailwindcss/vite`). Global CSS and custom properties in `src/styles/global.css`. Custom fonts in `public/fonts/`.

### IndieWeb

The site supports IndieWeb standards: h-card and h-entry microformats in layouts, IndieAuth endpoint pointing to indieauth.com.
