Personal blog and portfolio focused on software engineering, functional programming, and distributed systems.
itsdaniel.dk β’ Astro 7 Β· TypeScript Β· Tailwind CSS v4 Β· Deployed on Vercel
- π Type-safe content collections (notes, projects) with Markdown and Zod schemas
- π·οΈ Tag pages generated automatically with clean slug URLs
- π¨ Light/dark/system theme with no-flash inline script and view transitions
- π SEO: JSON-LD, Open Graph, canonical URLs, RSS, sitemap
- βΏ Accessibility: skip link, focus rings, reduced-motion support, no-JS fallback
- π Security headers (CSP, HSTS, etc.) via
vercel.json
pnpm install # Install dependencies
pnpm dev # Start dev server (pnpm dev:network to expose on LAN)
pnpm build # astro check + production build to dist/
pnpm preview # Serve the production build locally
pnpm lint # ESLint (pnpm lint:fix to autofix)
pnpm format # Prettier (pnpm format:check to verify)Requirements: Node.js 22.12+, pnpm 9+
src/
βββ components/ # Reusable Astro components
βββ content/ # Markdown content (notes, projects)
βββ layouts/ # Page and article layouts
βββ lib/ # Collection helpers and utilities
βββ pages/ # File-based routing
βββ styles/ # Global CSS and Tailwind config
Create a kebab-case folder with an index.md in src/content/notes/ or src/content/projects/:
---
title: "Post Title"
description: "Brief description"
date: 2025-01-15
updatedDate: 2025-02-01 # optional
draft: false # optional, excludes from builds and feeds
tags: ["fp", "dotnet"] # optional, max 3
---
Your content here...Projects additionally support demoURL and repoURL. Tag pages and their URLs are derived automatically from frontmatter tags.
Code is MIT, based on astro-nano by Mark Horn, with modifications by Daniel Larsen. Site content (posts and images) Β© Daniel Larsen.