Personal website and technical blog for Daniel Z.
This project is based on the Astro Cactus template, then customized for a portfolio + blog workflow.
- Astro 5
- Tailwind CSS 4
- Astro Content Collections
- Pagefind (static search)
- Satori (generated OG images)
- Added
projectcollection insrc/content.config.ts. - Added project data helpers in
src/data/project.ts. - Added project routes:
src/pages/projects/[...page].astro(listing)src/pages/projects/[...slug].astro(single page)
- Added project layout/components:
src/layouts/ProjectPost.astrosrc/components/project/ProjectMasthead.astrosrc/components/project/ProjectPreview.astro
In src/pages/index.astro:
- Projects section appears above posts.
- Latest 6 projects are shown.
- First 4 projects are shown as cards with:
- cover image
- publish date
- project title
- project tags
- Remaining projects are shown as a list under:
More From The Projects:
- Pinned posts section title updated to:
Pinned Highlights
/tags/now combines tags from both posts and projects.- Each tag shows combined count details in this format:
(N items: X posts, Y projects)
/tags/[tag]/shows both posts and projects in one chronological list.- Per-item prefixes in tag pages:
Project » ...Post » ...
- Added breadcrumbs above post/project titles:
Home / Posts /Home / Projects /
- TOC behavior and placement tuned for desktop/mobile readability.
- Content width and spacing adjusted to keep text readable while TOC can sit on the right.
In src/components/layout/Header.astro:
- Mobile menu opens as a full-screen overlay.
- Added close button (
✕) for the mobile menu. - Mobile menu closes when:
- user taps outside the menu panel
- user taps a navigation link
- Search and theme controls aligned to the right.
- Header logo now supports separate light/dark assets:
public/icon-light.svgpublic/icon-dark.svg
In src/components/layout/Footer.astro:
- Footer content moved to a stacked, left-aligned layout.
- Copyright line and menu order/spacing adjusted.
In src/styles/global.css:
- Dark-mode accent/link/quote colors were updated to a slate-blue style.
- Added light/dark logo visibility helpers:
.logo-light.logo-dark
- Added project case study:
src/content/project/pasha-group-websites.mdsrc/content/project/img/pasha-group-cover.jpgsrc/content/project/img/pasha-group-website-brand-design.jpg
- Added post:
src/content/post/help-bridge-the-internet-blackout-in-iran.md
- Removed sample project content used during UI prototyping.
src/content/post/→ blog postssrc/content/project/→ project pagessrc/content/note/→ notessrc/content/tag/→ optional tag metadata pagessrc/pages/→ route pagessrc/components/→ UI componentssrc/layouts/→ post/project/base layouts
npm install
npm run devSite runs at http://localhost:4321 (or next free port).
npm run check
npm run buildWorkflow: .github/workflows/ci.yml
Runs on push/PR to main:
pnpm installpnpm astro checkpnpm build
Before production deployment, update:
src/site.config.tsurl(currently template default)title,description,author, menu links
src/components/SocialList.astro- social profile links
- Base theme: Astro Cactus
- License: MIT (see
LICENSE)