Stack

Tools I reach for

The tools behind the work, and how often I actually use each one.

Daily
in use right now
Frequent
most projects
Familiar
used it before

Languages

TypeScript

Default for frontends and Node backends.

Daily

Rust

The core of Huble’s desktop tracker since the move off Electron.

Daily

JavaScript

The language under all the TypeScript, and plenty of older code.

Familiar

Python

Scripts, automation, and Python backends.

Familiar

Dart

The language behind Flutter, used to build AmnisLive.

Familiar

SQL

Schemas I design myself, not just what an ORM generates.

Frequent

Desktop & frontend

Tauri

Small, fast, locked-down desktop apps with a Rust core.

Daily

React

Component architecture, state, and routing, including Tall Tavern’s frontend.

Frequent

Next.js

Huble’s web app, deployed on Vercel.

Frequent

Tailwind CSS

Styling that stays consistent without a separate CSS layer.

Frequent

shadcn/ui

Accessible components I own and restyle, not a black box.

Frequent

SvelteKit

Shipped and scaled No Hesi’s server platform on it.

Frequent

Mapbox GL

Interactive maps for finding nearby courts on Duelgeek.

Familiar

Astro

Fast, content-first sites, including this portfolio.

Familiar

Electron

Built No Hesi’s first launcher and Huble’s first desktop tracker.

Familiar

Backend

Node.js

The runtime under most of my APIs.

Daily

Nest.js

Huble’s backend: structured APIs with modules that scale with a team.

Frequent

Express

Lean REST APIs when Nest is more than the job needs.

Frequent

FastAPI

Typed, async Python APIs, including Tall Tavern’s backend.

Familiar

Django

Batteries-included Python web apps.

Familiar

Flask

Small Python services and APIs.

Familiar

BullMQ

Queues and background jobs on Redis, scaled with load.

Frequent

Socket.IO

Live updates in Huble and No Hesi’s in-game chat.

Frequent

Discord bots

Subscription-gated channels for No Hesi, and an HR bot for leave requests.

Familiar

Data

PostgreSQL

My default relational database, and what Huble runs on.

Daily

SQLite

Offline storage in Huble’s desktop tracker, synced when back online.

Frequent

Redis

Backs BullMQ queues at scale, kept on a private network.

Daily

Supabase

Fast to start on, and I’ve migrated a product off it once it outgrew it.

Familiar

Neon

Serverless Postgres with database branching.

Familiar

MySQL

Relational work on existing stacks.

Familiar

MongoDB

Document storage when the data really is documents.

Familiar

Cassandra

Wide-column storage built for heavy write loads.

Familiar

Neo4j

Graph queries for when the relationships are the data.

Familiar

Cloud & DevOps

AWS

VPC, EC2, RDS, Lambda, WorkSpaces, IAM Identity Center, Secrets Manager, CloudTrail, and S3.

Frequent

Terraform

Whole AWS platforms defined as code, nothing clicked together.

Frequent

Hetzner

The machines Huble’s backend runs on.

Frequent

Vercel

Deploys and custom domains for Huble and Duelgeek.

Frequent

Docker

Huble’s backend ships as a container, same from dev to production.

Frequent

Nginx

Reverse proxy in front of Huble’s and No Hesi’s backends.

Frequent

Turborepo

One monorepo for Huble’s backend, web app, desktop tracker, and website.

Frequent

GitHub Actions

Dev, Staging, and Production pipelines that reach AWS through OIDC, not stored keys.

Frequent

Linux

Servers and the self-hosted CI runners that build our apps.

Daily

Git

Every change goes through a reviewed pull request.

Daily

Identity & security

Auth.js

Passwords, magic links, and Google and Discord OAuth, with users migrated from Supabase Auth.

Familiar

OAuth 2.0 + PKCE

Browser-based sign-in for Huble’s and No Hesi’s desktop apps.

Frequent

SAML 2.0 & SCIM

Single sign-on and automatic user provisioning from Google Workspace.

Familiar

AI

Claude

Custom agents that speed up development and review pull requests.

Daily

OpenAI API

Scene narration and DALL·E art for Tall Tavern.

Familiar

ChatGPT

Research, second opinions, and first drafts.

Frequent

Gemini

Long-context reading across big docs and codebases.

Frequent

Grok

Quick answers with a different model’s take.

Frequent

v0 by Vercel

UI ideas turned into React components in minutes.

Frequent

Lovable

Fast prototypes, and I’ve taken a Lovable-built MVP to production.

Frequent

Analytics

Google Analytics 4

Funnel events like sign-ups and trial starts, feeding follow-up emails.

Familiar

Google Tag Manager

Deploys and manages tracking tags without touching app code.

Familiar

CookieYes

Cookie consent, so visitors choose what gets tracked.

Familiar

Payments

Paddle

Built Huble’s subscription billing, webhooks included.

Frequent

Stripe

Built No Hesi’s subscription webhooks and gifting.

Familiar

Email

Postmark

Transactional email that reliably reaches the inbox.

Familiar

Resend

Email and notifications for Duelgeek.

Familiar

SendGrid

High-volume and marketing email.

Familiar

Mobile

WebRTC

Signaling, ICE, and SFUs, learned building AmnisLive.

Familiar

Agora

Real-time video for AmnisLive’s live streams.

Familiar

Firebase

Push notifications and data storage for AmnisLive.

Familiar

Flutter

Built AmnisLive with it.

Familiar