# CLAUDE.md Development guidance for this minimal 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 barebones structure: ### Content Layer (`src/content/`) - **blog/** - MDX blog posts with schema validation (title, description, pubDate, updatedDate, heroImage, category, tags) Schema defined in `src/content.config.ts` ### Component Layer Minimal components only: - **BaseHead.astro** - Basic SEO metadata - **BlogCard.astro** - Simple blog post card - **FormattedDate.astro** - Date formatting utility ### Routes - `/` - Homepage with links to blog and contact - `/blog` - Blog index listing all posts - `/blog/[slug]` - Individual blog post pages - `/contact` - Basic contact form - `/404` - 404 error page ### Layouts - **BaseLayout.astro** - Basic HTML structure with head - **BlogPost.astro** - Blog post layout with metadata ## Styling Minimal global CSS in `src/styles/global.css`: - Basic typography - Simple prose styles for markdown content - No elaborate themes, animations, or custom styling ## Image Handling - `src/assets/` - Processed by Astro (use for heroImage in frontmatter) - `public/media/` - Served as-is (use 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`) - **`src/utils/reading-time.ts`** - Calculate reading time for blog posts