2025-12-27 11:54:59 +00:00

82 lines
2.4 KiB
Markdown

# CLAUDE.md
Development guidance for this Astro template repository.
## Commands
### Core Development
```bash
pnpm dev # Development server
pnpm build # Build for production
pnpm preview # Preview build with Wrangler
pnpm deploy # Deploy to Cloudflare Pages
```
### Utilities
```bash
pnpm commit # AI-powered commit messages
pnpm convert:avif:all # Convert all images to AVIF
pnpm convert:avif:jpeg
pnpm convert:avif:png
pnpm cf-typegen # Generate Cloudflare types
```
## Change Documentation
**IMPORTANT**: Update `dev/continuity.md` when making changes to document:
- What changed and why
- Decisions made
- Next steps
## Architecture
Minimal Astro template with content-driven architecture:
### Content Layer (`src/content/`)
- **blog/** - MDX blog posts with schema validation
- **sections/** - Homepage sections (hero, experience, skills, featured-project)
- **pages/** - Page-specific content (contact)
Schema defined in `src/content.config.ts`
### Component Layer
- **Core UI**: BlogCard, FormattedDate, Navigation, Footer, GridOverlay
- **Blog**: BlogFilters, ReadingProgress, TableOfContents, PostNavigation, RelatedPosts
- **Sections**: Hero, Experience, Skills, FeaturedProject
### Routes
- Static routes in `src/pages/`
- Dynamic blog routes via `[...slug].astro`
- Layouts in `src/layouts/`
## Data Flow
**Blog Index** (`src/pages/blog/index.astro`):
1. Fetch all posts via `getCollection('blog')`
2. Sort by pubDate (newest first)
3. Identify featured post (first with `featured: true`)
4. Render featured hero + filterable grid
5. Extract categories for filter UI
**Individual Posts** (`src/pages/blog/[...slug].astro`):
1. `getStaticPaths()` generates routes
2. Calculate previous/next posts (by date)
3. Find related posts (matching category/tags, limit 3)
4. Calculate reading time (200 wpm)
5. Pass to `BlogPost` layout
## Image Handling
- `src/assets/` - Processed by Astro (relative paths)
- `public/media/` - Served as-is (absolute paths like `/media/file.mp4`)
- AVIF conversion utility available
## Deployment
- Cloudflare Pages adapter configured
- Image service: "compile" mode
- Platform proxy enabled for development
## Utility Scripts
- **`src/utils/convert-to-avif.js`** - Image optimization
- **`src/utils/git-commit.js`** - AI commit message generation (requires OpenRouter API key in `src/utils/.env`)