Dispatch is a planner I'm building for myself — a native macOS and iPhone app that keeps my tasks on my own devices first and syncs them second. It's early: it runs, it's not finished, and it's already the most complicated thing I've written.
The rule I set at the start is that it never has to ask the network for permission. Every write lands in SwiftData locally and works offline; Supabase carries it to the other device afterwards, and realtime updates are a nudge to refresh rather than the thing recovery depends on.
The half I actually find interesting is letting an AI agent use it. Dispatch speaks MCP, but an agent never gets my account — it gets a scope that's explicit, short-lived, revocable, and narrower than my workspace, and every write it makes is checked against that scope and recorded.
The site you're reading is itself the first project. It's a Next.js site where my Obsidian vault is the CMS: create a folder with a main.md and it becomes a page in the sidebar; drop a note into that folder and it becomes a post with its own URL. Hitting save in Obsidian auto-commits to GitHub, Vercel rebuilds, and the change is live in about a minute.
How a note becomes a pageЯк нотатка стає сторінкою
A few decisions I'm happy with:
No database. Content is markdown in git — versioned, portable, free.
Fully static. Every page is pre-rendered at build time, so it's fast and there's nothing to hack at runtime. Fitting, for a future security person.
Pluggable page styles. Each section declares a type (posts, music, people, projects) and the code maps it to a layout — this page is the projects type.
Obsidian syntax works. Wiki links, image embeds with widths, even Apple Music links that turn into players.