Colophon
What this site is built on, and the tools I use every day.
Built with
- Framework
- Next.jsReactTypeScript
- Interface
- Tailwind CSSshadcn/uiMotionPhosphor
- Type
- Geist
- Comments
- Better AuthFuma Comment
- Resend
- Visits
- d3-geoVercel Analytics
- Hosting
- Vercel
Design
One narrow column and one size of Geist for almost everything you read. Hierarchy comes from weight and grey, not from bigger type. Groups are made with space rather than lines or boxes, and motion is kept for the moments you reach for something: a hover, a preview, a row opening.
Black and white, with color only where it carries meaning: a flag, a project's own logo, the dots of a browser window.
- Paper
- Rule
- Muted
- Ink
- AaGeist 400
- AaGeist 500
- AaGeist Mono
Uses
- ZedMain editor. Fast, clean, no bloat.Editor
- PyCharm and IntelliJWhen Python or the JVM need proper language tooling.IDE
- TanStack StartFull-stack React on Vite, typed routes end to end.Framework
- Tailwind CSS and shadcn/uiStyling without overthinking it.UI
- Cloudflare WorkersWhere my apps run, close to every visitor.Runtime
- D1SQLite at the edge, queried straight from a Worker.Database
- R2Object storage for uploads and files, no egress fees.Storage
- Workers Analytics EngineEvent analytics written from Workers, read with SQL.Analytics
- Email RoutingCustom addresses forwarded to my inbox.Email
- Cloudflare DNSDomains, records and proxying in one place.DNS
- NeonServerless Postgres when a project needs it, typed with Drizzle.Database
- Better AuthAuth when I want full control over it.Auth
- DockerWhen a project needs another provider or stack.Containers
- GitHub ActionsCustom pipelines beyond what the host gives me.CI
- PlanifyMy own planner: tasks, calendar, notes and time in one place.Planning
- AWS
- Terraform
- Jenkins
- Kubernetes
- SonarQube
- Prisma
- Supabase
- PostgreSQL
- Python
- Inngest
- Upstash
- n8n
