// work
The receipts,
in full.
Every project shipped under the threesided banner — personal builds, side ideas, the occasional client thing. Each card links to a detail page with the architecture decisions and recent shipping log.
18 projects · filter by tech below.
threesided.com
The site you're on. Zero UI frameworks, hand-written CSS, view transitions, a lab of 18 live tech demos. The showcase is the demo.
- Astro 6
- Vanilla CSS
- Three.js
- GLSL
- Web Audio
- Netlify
SquishyMind
Mind-mapping app where ideas pan, zoom, and snap together. Real-time sync across devices, share links, the works.
- Next.js 16
- TypeScript
- Supabase
- Vercel
dnd.chat
Gameplay-first campaign chat — auditable dice, DND Cards conjures, initiative and HP beside the thread, session RSVPs and reminders from table@dnd.chat.
- Next.js 16
- Supabase
- Tailwind v4
- Netlify
- Bunny CDN
- Resend
- Three.js
- Sentry
DND Cards
Grimoire-bound campaign platform — cards for every NPC, spell, and location, lore graph, AI art, D&D Beyond import, card-native VTT, and a shared grimoire with dnd.chat.
- Next.js 16
- Supabase
- Tailwind v4
- PixiJS
- OpenAI
- Netlify
Dungeon Jerks
Snarky tile-and-card board game on the web — pass-and-play or async multiplayer, 110 tiles, pre-generated narration, CPU bots that wait their turn.
- SvelteKit
- Svelte 5
- TypeScript
- Netlify
- Netlify Blobs
- Airtable
- ElevenLabs
Big Black Cards
Cards-against-humanity-style party game with live cursors, presence, and reactions. Realtime is the feature.
- Vite
- React
- TypeScript
- Tailwind v4
- Supabase Realtime
Poetry Obscura
Curated verse on Astro v2 — moods, share cards, AI quote art. Relaunched off Webflow with poetryobscura.com live again.
- Astro 6
- Markdown
- Jimp
- CanvasKit
- Netlify
- Sveltia CMS
Wack.dev
A social network reboot — no ads, no politics, no clickbait. WordPress + BuddyBoss base, free in beta, $1/month after.
- WordPress
- BuddyBoss
- Custom theme
- Coolify / DigitalOcean
Wreck Everything
Comedy collective spanning podcasts, MST3K-style movie commentary, and full-audio re-dubs of bad shows.
- Custom static
- Multi-domain brand
- Audio/Video production
AntiPretty
Alt-modeling gallery and community relaunch — fifteen years of shoots on WordPress, rebuilt in days on Payload with bulk gallery import, member profiles, DMs, casting calls, and Miss AntiPretty.
- Next.js 16
- Payload CMS 3
- Supabase Postgres
- Bunny CDN
- Netlify
- Anthropic
Excuse My Blank!
A card game built for fast laughs at small tables. Super simple rules, no setup overhead, NSFW lite.
- Webflow
- Print-on-demand
- Card-game design
DefyDestiny.com
A choose-your-own-adventure with Space Quest energy and Hitchhiker's Guide pacing. 164 passages, 6 endings, one love potion.
- Twine
- Harlowe 3.3.9
- JavaScript
Desk Gremlins
Desktop companions that walk along your screen edge, perch on app title bars, and help in small ways — notes to Obsidian, paste, search, chat.
- Tauri 2
- SolidJS
- Three.js
- Rust
- OpenAI
Self Hurt Guide
A satirical self-help blog. No ads, no algorithm, no mercy. Essays + personal anecdotes about not getting in your own way.
- Sanity CMS
- Astro / Next.js
- Custom theme
Player Zero
Comedy interviews podcast set inside a Metaverse fiction — the host is a Virtual Reality test subject pulled inside the game.
- Apple Podcasts
- Audio production
- Long-form interview format
Vegas Kiddos
Free family event finder for Las Vegas — filter by age, price, neighborhood; map, favorites, reminders, scraped + enriched listings.
- Next.js 15
- React 19
- Tailwind
- Leaflet
- Airtable
- Netlify
Fake DM
A custom GPT for D&D 5e — whimsical narration, freeform world, and Dall-E images every turn.
- ChatGPT custom GPT
- GPT-4 system prompt
- DALL-E image generation
FuhNNY
Comedy blog on Astro — hot takes, field guides, fake news. Relaunched on www.fuhnny.com with OG cards, Sveltia admin, Jimp thumbs.
- Astro 6
- Markdown
- Jimp
- Netlify
- Sveltia CMS
No projects match that tech.
// like what you see?
Have one of your own to ship?
A paragraph about what you'd build is all I need to know whether I'm the right fit.