Personal Portfolio Website
A static portfolio and blog built with Astro, featuring a responsive design, markdown content management, and automated deployment.
Overview
This is my personal portfolio website — the site you’re currently viewing. It serves as both a showcase of my work and a platform for writing about programming, computer science, and technology.
Features
- Static site generation with Astro for optimal performance
- Content collections with type-safe schemas for blog posts and projects
- Markdown-based writing with YAML frontmatter
- Responsive design that works on all devices
- Automated CI/CD via GitHub Actions deploying to Cloudflare Pages
Technical Stack
I chose Astro as the foundation because it offers excellent static site generation capabilities while allowing me to add interactive components only where needed. The “islands architecture” means most of the page is pure HTML with JavaScript loaded selectively.
TypeScript provides type safety throughout the codebase, particularly for content schemas and props.
CSS is vanilla — no frameworks needed for a site of this scale. This keeps bundle sizes minimal and gives me complete control over styling.
Content Management
Blog posts and project writeups are stored as markdown files in the repository. Each has a schema defined in src/content/config.ts:
- Blog posts include title, description, publication date, tags, and draft status
- Projects include tech stack, demo/repository URLs, and featured flag
This approach means:
- Content is version-controlled alongside code
- Writing happens in my preferred editor
- No database or CMS to maintain
- Deployment is just
git push
Deployment
The site builds automatically on every push to the main branch via GitHub Actions. The static output is deployed to Cloudflare Pages, which provides a global CDN and free SSL.
This workflow means I can write a new post, commit, push, and have it live within minutes — all without touching any infrastructure.