Static developer portfolio built with Astro, TypeScript, TailwindCSS, and markdown content collections. The site is designed for a Cloud / DevOps engineer profile and is deployed as static output served by a Cloudflare Worker.
- Astro
- TypeScript
- TailwindCSS
- Markdown content collections
- Install dependencies:
npm install- Start the dev server:
npm run dev- Build the static site:
npm run build- Preview the production build:
npm run previewnpm run build also generates the social preview image used by Open Graph and Twitter cards.
Create a markdown file in /src/content/projects with this frontmatter shape:
---
title: "Project title"
description: "Short summary"
technologies:
- AWS
- Terraform
github_link: "https://github.com/..."
demo_link: "https://example.com"
architecture_notes: "Short architectural summary"
---The body below the frontmatter becomes the project detail page.
Create a markdown file in /src/content/blog with this frontmatter shape:
---
title: "Post title"
date: 2026-03-09
description: "Short description"
tags:
- AWS
- DevOps
---The markdown body is rendered into the blog article page automatically.
Pull requests targeting main run two GitHub Actions workflows:
Validation: installs dependencies, runsnpm run build, validateswrangler deploy --dry-run, and checks required build artifactsSecrets Scan: runs Gitleaks against the repository history
The Astro config is set to output: "static" and the Cloudflare Worker serves the generated dist directory.
- Build command:
npm run build - Deploy command:
npx wrangler deploy - Version command:
npx wrangler versions upload - Root directory:
/
Worker configuration lives in wrangler.jsonc.
- Styling is dark-mode-first and intentionally minimal.
- Content is markdown-driven to keep maintenance simple.
- JavaScript is kept minimal so the site stays fast and static.