Personal blog built with Astro.
- Site: https://chooblarin.github.io
- Canonical: https://chooblarin.com
- Install dependencies:
npm ci - Start dev server:
npm run dev - Open preview build:
npm run build && npm run preview
- Formatting/Lint:
npm run biome:check - Text lint:
npm run textlint - Content governance lint:
npm run content:lint:strict - Unused entry check:
npm run check:unused
UI is split into three layers:
src/pages/src/layouts
Page composition and route-level data loading.src/islands
Astro boundary layer that connects pages/layouts to React UI.src/design-system/react
Reusable React UI modules.primitives: low-level UI building blocks (Button,Link, ...)patterns: post-specific composed UIs (PostItem,TableOfContents, ...)
Domain logic is under src/domain:
src/domain/posts/query.ts: post collection query helperssrc/domain/posts/tag.ts: tag normalization/grouping helperssrc/domain/posts/tag-taxonomy.json: canonical tag/alias source of truth
- Posts are managed under
src/content/post/. - Historical posts live under
src/content/post/archive/. - Frontmatter schema is defined in
src/content.config.ts. - Governance checks are implemented in
scripts/content-lint.mjs.
- Start:
npm run storybook - Build:
npm run build-storybook