diff options
Diffstat (limited to 'CLAUDE.md')
| -rw-r--r-- | CLAUDE.md | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 0000000..e5b1ce2 --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1,72 @@ +# CLAUDE.md + +## Project Overview + +Personal website and blog for Dawid Rycerz (rycerz.xyz). Built with Astro 5, featuring DevOps/web development blog posts, Pleroma microblog integration, full-text search, and dynamic OG image generation. Based on the Astro Cactus theme. + +## Commands + +```bash +pnpm dev # Start dev server +pnpm build # Build to ./dist/ +pnpm postbuild # Generate Pagefind search index +pnpm preview # Preview built site +pnpm deploy # Build + deploy to Cloudflare Pages +pnpm lint # Biome linting +pnpm format # Full formatting (Biome + Prettier + imports) +pnpm check # Astro type checking +``` + +## Architecture + +- **Framework:** Astro 5 (static site generator) with TypeScript (strictest mode) +- **Styling:** TailwindCSS 4 with Typography plugin +- **Content:** Markdown/MDX blog posts in `src/content/post/`, tags in `src/content/tag/` +- **Pleroma loader:** Custom content loader fetching posts from `social.craftknight.com` (`src/loaders/pleroma.ts`) +- **Custom plugins:** Remark admonitions (`src/plugins/remark-admonitions.ts`), Rehype image captions (`src/plugins/rehype-image-captions.ts`) +- **OG images:** Generated dynamically with Satori + Sharp (`src/pages/og-image/`) +- **Search:** Pagefind (indexed at postbuild) +- **Package manager:** pnpm + +### Key directories + +``` +src/ +├── components/ # Astro components (layout/, blog/) +├── content/ # Content collections (post/, tag/, pleroma) +├── data/ # Static data files +├── i18n/ # Internationalization +├── layouts/ # Page layouts (Base, BlogPost) +├── loaders/ # Custom content loaders +├── pages/ # Routes and dynamic pages +├── plugins/ # Remark/Rehype plugins +├── styles/ # Global styles +├── utils/ # Utility functions +├── content.config.ts # Content collection schemas +└── site.config.ts # Site-wide configuration +``` + +### Key config files + +- `astro.config.ts` - Astro configuration, integrations, markdown plugins +- `biome.json` - Linter/formatter (2-space indent, 100 char width, tabs) +- `tailwind.config.ts` - TailwindCSS with custom prose styling +- `tsconfig.json` - Strict TypeScript, `@/*` path alias to `src/*` + +## Conventions + +- TypeScript strict mode throughout +- Formatting: tabs, 100 char line width, trailing commas (Biome + Prettier) +- Path alias: `@/*` maps to `src/*` +- Astro components use `.astro` extension +- Blog posts use Markdown/MDX with YAML frontmatter +- Pre-commit hooks via Husky + +## Commit Rules + +**IMPORTANT:** Before completing any task, you MUST run `/commit` to commit your changes. + +- Only commit files YOU modified in this session - never commit unrelated changes +- Use atomic commits with descriptive messages +- If there are no changes to commit, skip this step +- Do not push unless explicitly asked |
