Personal website built with Astro.
Quick start#
# Install dependencies and create config files from templates
bun install
# Edit your config files
# src/site.config.ts — name, URL, contact, projects, apps
# src/content.config.ts — blog content directory
# Start dev server (content from ./content/blog)
bun run dev
# Or with external content directory
just dev ../my-blog
Project structure#
src/
pages/ — route pages (.astro)
layouts/ — page layouts
styles/ — global CSS
lib/ — shared utilities
site.config.ts — site metadata & configuration
public/ — static assets (copied verbatim to output)
content/ — content (blog posts, fonts, favicons, images, GPG key)
deploy/ — compose + caddy config
Blog posts#
Add markdown files to content/blog/ (or use just dev <path>). Frontmatter:
---
title: "My Post"
date: 2025-06-01
description: "Optional description"
draft: false
---
Deploy#
Static output in dist/. The included Compose file serves it via Caddy on port 3000:
bun run build
cd deploy && podman compose up -d
Scripts#
| Command | Description |
|---|---|
bun run dev |
Dev server with HMR |
bun run build |
Production build |
bun run preview |
Preview production build |
bun run check |
Type-check |
bun run format |
Format code |
bun run format:check |
Check formatting (CI) |