Personal brand website for Mr Panda, built with Astro, Tailwind CSS, and Astro Content Collections, and deployed to Cloudflare Workers.
- Astro 5 (
@astrojs/cloudflare,@astrojs/mdx,@astrojs/tailwind) - TypeScript (strict config)
- Tailwind CSS
- pnpm workspace
- Cloudflare Workers + KV
.
├─ apps/
│ └─ web/
│ ├─ src/
│ │ ├─ pages/ # Routes (Astro pages)
│ │ ├─ components/ # Reusable UI components
│ │ ├─ layouts/ # Shared layouts
│ │ ├─ content/ # Blog / projects / resources content
│ │ ├─ data/ # Site metadata and nav config
│ │ └─ lib/ # Utility functions
│ ├─ public/ # Static files and downloads
│ └─ wrangler.toml # Cloudflare deployment config
├─ package.json # Workspace-level scripts
└─ pnpm-workspace.yaml
pnpm install
pnpm devThe site runs locally through the workspace script (apps/web under the hood).
Run from repository root:
pnpm dev- Start local dev serverpnpm build- Build production assetspnpm preview- Preview production build locallypnpm check- Run Astro content/type checkspnpm typecheck- Alias for Astro checks
- Add posts/resources/projects in
apps/web/src/content/ - Update schemas in
apps/web/src/content.config.tswhen content shape changes - Use route files in
apps/web/src/pages/for new pages
pnpm build
pnpm dlx wrangler@latest deploy --config apps/web/wrangler.tomlBefore deploy, run responsive checks using apps/web/RESPONSIVE_QA_CHECKLIST.md.
- Keep secrets in
.envfiles (ignored by git) - Do not commit generated folders such as
apps/web/distandapps/web/.astro