A personal blog built with Astro, TailwindCSS, and TinaCMS.
This is a static site blog powered by Astro with content management through TinaCMS. The site is deployed to GitHub Pages and includes a digital garden section for long-form essays and ideas.
- Astro 5.9.0 - Static site generator
- TailwindCSS 4.1.6 - Utility-first CSS framework
- TinaCMS 2.7.8 - Headless CMS for content management
- pnpm - Package manager
/
├── src/
│ ├── content/ # Content files (Markdown)
│ │ ├── blog/ # Blog posts
│ │ ├── now.md # Now page
│ │ └── people.md # People page
│ ├── layouts/ # Layout components
│ ├── pages/ # Page components
│ │ ├── index.astro # Home page
│ │ ├── blog.astro # Blog listing
│ │ ├── garden.astro # Digital garden
│ │ └── [...]
│ └── components/ # Reusable components
├── public/ # Static assets
├── tina/ # TinaCMS configuration
├── .github/workflows/ # CI/CD workflows
└── package.json
# Install dependencies
pnpm install
# Start dev server with TinaCMS
pnpm dev
# Server runs at http://localhost:4321
# TinaCMS admin at http://localhost:4321/admin# Build for production
pnpm build
# Preview build locally
pnpm preview| Command | Action |
|---|---|
pnpm install |
Install dependencies |
pnpm dev |
Start local dev server with TinaCMS at localhost:4321 |
pnpm build |
Build production site to ./dist/ |
pnpm preview |
Preview production build locally |
pnpm astro ... |
Run Astro CLI commands |
This project uses GitHub Actions for deployment to GitHub Pages.
Workflow File: .github/workflows/deploy.yml
Trigger Configuration:
- Type: Manual only (
workflow_dispatch) - Branch:
master(default branch) - No automatic deployments on push - Full control over when the site goes live
Deploy the site from the command line:
# Trigger workflow from command line
gh workflow run deploy.yml --ref master
# Check workflow status
gh run list --limit 5
# View detailed workflow output
gh run view <RUN_ID>Or from GitHub UI:
- Go to Actions tab in the repository
- Select Deploy to GitHub Pages workflow
- Click Run workflow → Run workflow button
Deployment Process:
- Checks out the repository
- Installs dependencies (auto-detects pnpm)
- Builds the Astro site
- Deploys to GitHub Pages
Live Site: https://themattchung.com
TinaCMS is integrated for easy content editing:
- Start dev server:
pnpm dev - Visit CMS admin:
http://localhost:4321/admin - Edit content through the UI
- Changes save to Markdown files in
src/content/
All content is stored in Markdown files in src/content/:
- Blog posts:
src/content/blog/(e.g.,2025-01-31-joining-dataswyft.md) - Pages:
src/content/now.md,src/content/people.md
- The repository uses
masteras the default branch (notmain) - GitHub Actions workflow is configured for manual deployments only
- All dependencies are pinned in
pnpm-lock.yaml - TinaCMS generates additional files (kept in
.gitignore)