This blog is powered by a two-repo architecture that syncs content from my private Obsidian vault to a public Astro site.
How It Works
I write in Obsidian using all my favorite features:
- Wikilinks: [[other-posts]] link automatically
- Callouts: Render beautifully
- Math: works inline and in blocks
- Code: Syntax highlighting included
This is an Obsidian callout. It renders with proper styling on the blog.
Writing Workflow
- Create a markdown file in
publish/blog/(or any other section) - Add frontmatter with title, date, description, and tags
- Write using normal Obsidian markdown
- Obsidian Git auto-commits and pushes
- Blog rebuilds automatically on Vercel
Zero friction. Just write.
Sections
The blog has multiple sections:
- blog: Long-form essays and articles
- notes: Short-form thoughts and observations
- projects: Project writeups and documentation
- guides: Tutorials and how-tos
- til: Today I learned micro-posts
Each section is just a folder in my vault. Adding a new section is as simple as creating a new folder.
Design Philosophy
The design is inspired by print magazines and newspapers:
- Serif body text for comfortable reading
- Sans-serif headings for contrast
- Constrained width (38rem) for optimal line length
- Warm, paper-like background
- Minimal, editorial aesthetic
No hero images. No gradients. Just type, space, and thin rules.
Technical Stack
- Obsidian: Writing environment
- Astro: Static site generator
- Vercel: Hosting and deployment
- GitHub Actions: Auto-deploy trigger
The entire setup is documented in the architecture spec if you’re curious about the implementation details.