Statically exported blog built with Next.js.
- Node.js 22
- pnpm 10 (
packageManageris fixed inpackage.json)
pnpm install
pnpm exec playwright install chromiumpnpm devDefault URL: http://localhost:3000
pnpm lint # ESLint
pnpm exec tsc --noEmit # Type check
pnpm build # Production build
pnpm export # Generate OG images + build (static export)
pnpm storybook # Storybook dev server
pnpm build-storybook # Build Storybookpnpm generate-ogimages # Generate only missing/targeted images
pnpm generate-ogimage 0 10 # Generate by range
pnpm generate-all-ogimages # Force-generate all post OG imagesNotes:
- CI passes
FORCE_OG_IMAGE_SLUGSandFORCE_REGENERATE_OG_IMAGESto regenerate only required images. - If Playwright browser binaries are missing, run
pnpm exec playwright install chromium.
- Push to
maintriggers GitHub Pages deployment via.github/workflows/gh-pages.yml. - Weekly production dependency audit runs via
.github/workflows/security.yml(pnpm audit --prod).
- Markdown rendering currently allows raw HTML (
rehypeRaw,allowDangerousHtml). - This is safe only because input is trusted repository content in
contents/. - Do not pass user-generated markdown without adding sanitization.