Case studies
Deep dives,
honestly written.
Selected work, with the constraints I hit, the decisions I made, and the metrics that came out the other side.
Foniolabs.xyz — Sanity + Next.js + Claude Code MCP
A static-exported marketing site on Hostinger meant every content change needed an engineer. The marketing team wanted to ship a page without opening a PR.
- Next.js 16
- Sanity
- GROQ
- Vercel
- Claude Code MCP
Pagrin — Multi-App Monorepo with Shared AI, Analytics, and i18n
Two apps (partners dashboard + embeddable web SDK) needed to share a chat UI, analytics signals, and i18n. Copy-pasting between them would have rotted the moment one shipped without the other.
- Turborepo
- Next.js 16
- TypeScript
- OpenTelemetry
- Vercel AI SDK
Rabit — Embedded Wallet SDK with Non-Custodial Key Recovery
Embedded wallets force teams to choose between custodial (centralized, regulated) and seed-phrase (terrible UX). Recovery without either is the hard problem.
- TypeScript
- Turborepo
- Changesets
- viem
- @solana/web3.js
Schoolbox — Offline-First AI Tutor on Tauri + Rust
AI tutors assume always-on broadband. In low-connectivity regions that's not the deployment reality. Schoolbox needed to work offline, sync when it could, and still feel like a modern app.
- Tauri 2
- Rust
- React 18
- TypeScript
- SQLite