Minimal Astro-powered personal research blog for papers, essays, notes, and ideas. Built for GitHub Pages with dark mode, accessibility features, and a test suite.
- Astro 6 static site with MDX content collection
- TypeScript with strict config
- Vitest for unit testing (26 tests)
- GitHub Pages deployment via GitHub Actions (SHA-pinned)
- Security headers (CSP, X-Frame-Options, Referrer-Policy)
npm install
npm run devThe site runs locally at http://localhost:4321/martello-ai-research/.
npm test # 26 unit tests via Vitest
npm run check # Astro type checking
npm run build # Static build to dist/- Dark mode — auto-detects system preference, manual toggle with localStorage persistence
- Accessibility — skip-to-content link, focus-visible outlines, ARIA landmarks, reduced-motion guards
- Performance — Astro prefetch on hover, compressed HTML, optimized font loading (
display=optional) - Security — Content Security Policy, SHA-pinned CI actions,
npm auditin pipeline, Zod schema validation with strict rules - Reading experience — progress bar on posts, hover states on cards, sticky blurred header
Create posts in src/content/posts/ with this frontmatter:
---
title: "Post title"
date: "2026-03-17"
summary: "One-line description."
type: "essay"
tags:
- strategy
- research
draft: false
slug: "post-title"
---Allowed type values: paper, essay, note, idea.
The included workflow deploys on pushes to main. CI runs tests and npm audit before building.
Repo settings required:
- Go to GitHub
Settings > Pages. - Set source to
GitHub Actions. - Push to
main.
Production URL: https://mjamiv.github.io/martello-ai-research/