Skip to content

Ecattea/Blog

Repository files navigation

Blog

Demo-inspired multi-page blog built with Astro.

Project map

Resource Location Notes
Articles (Markdown) src/data/blog/**/*.md Main content source
Content schema src/content.config.ts Frontmatter validation
Home route src/pages/index.astro /
Articles list src/pages/articles/[...page].astro /articles/ (paginated)
Article detail src/pages/articles/[...slug]/index.astro /articles/<slug>/
Article OG image src/pages/articles/[...slug]/index.png.ts /articles/<slug>/index.png
Site OG image src/pages/og.png.ts /og.png
About src/pages/about/index.astro /about/
Tags src/pages/tags/index.astro /tags/
Tag detail src/pages/tags/[tag]/[...page].astro /tags/<tag>/ (paginated)
Search src/pages/search.astro /search/ (Pagefind UI)
Archives src/pages/archives/index.astro /archives/
Shared layout src/layouts/Layout.astro Fonts + view transitions + ambient + dock
Design tokens src/styles/tokens.css :root variables
Global styles src/styles/global.css Demo-derived components + transitions
UI components src/components/ AmbientBackground, DockNav, etc.
Post query layer src/services/posts.ts Shared published/tag/archive query utilities
Static assets public/ Optional; put your own static files here
Search index dist/pagefind/ Generated by Pagefind during pnpm run build
Build output dist/ Deployed assets
Workers deploy config wrangler.jsonc assets.directory = "./dist"

Local dev

pnpm install
pnpm run dev

Build

pnpm run build

Validation

pnpm run validate:fast    # lint + typecheck
pnpm run validate:release # full production validation (build + pagefind)

Writing Posts

Published posts should live under src/data/blog/.

  • Recommended default location: src/data/blog/<slug>.md
  • Optional grouped location: src/data/blog/<group>/<slug>.md
  • Reserved non-published paths: any file or directory starting with _

Examples:

src/data/blog/my-first-post.md
src/data/blog/notes/my-second-post.md
src/data/blog/_templates/post-template.md   # not published
src/data/blog/_drafts/idea.md               # not published

Current frontmatter contract:

---
title: "My first post"
description: "Short summary for cards and metadata."
pubDatetime: 2026-03-06T09:00:00.000Z
tags:
  - notes
modDatetime: 2026-03-06T09:00:00.000Z # optional
canonicalURL: "https://example.com/my-first-post/" # optional
---

Required fields:

  • title
  • description
  • pubDatetime

Common optional fields:

  • tags
  • modDatetime
  • canonicalURL

This repository is optimized for personal use. Local validation stays lightweight, and production confidence comes from pnpm run validate:release plus deployment-time build checks.

Deploy (Cloudflare Workers static assets)

This project deploys dist/ as static assets via wrangler.jsonc.

pnpm run build
npx wrangler@latest deploy

Notes

  • Pagefind search index is generated during pnpm run build. Use pnpm run preview to test /search/.

About

My Blog's Repo

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors