Toolkit

Stack

What I build with, ranked by actual usage across 25 web and mobile projects. Not a wish list — a frequency map, counted from each project’s own dependency files in October 2026.

Primary stack — in roughly half the projects or more

TypeScript

23 of 25 projects

Primary language for everything. Strict mode. Type safety isn't optional when you're the only developer.

React / React Native

22 of 25 projects

Component architecture for web and mobile. React 18 and 19. Expo for cross-platform. Radix UI and shadcn/ui for accessible primitives.

PostgreSQL

16 of 25 projects

Primary database. PostGIS for geospatial. Full-text search. Row-level security via Supabase. 35 models in the largest project.

Claude API

14 of 25 projects

AI backbone. Sonnet for speed, Opus for depth. Tutoring, synthesis, analysis, document intelligence, vision.

Vercel

14 of 25 projects

Frontend hosting, serverless functions, Next.js deployment. Fast CDN, automatic HTTPS.

Vitest

13 of 25 projects

Fast unit testing. Vite-native, compatible with Jest API. 196 tests in the largest project.

Tailwind CSS

12 of 25 projects

Utility-first. Fast iteration. Consistent design tokens. Dark mode by default.

Also build in — used in several projects

Next.js

11 projects

Full-stack React framework. App Router, server components, API routes, ISR. Used for content-heavy sites.

Express.js

10 projects

Backend workhorse. REST APIs, WebSocket servers, file processing pipelines, AI proxy layers.

Railway (referral)

10 projects

Primary hosting for backends. Docker deployments, persistent storage, easy scaling.

Stripe

10 projects

Payment processing for web apps. Webhooks, subscription billing, metered usage.

Expo / React Native

10 projects

Cross-platform mobile from a single codebase. EAS builds for iOS and Android. File-based routing via Expo Router.

Vite

9 projects

Build tool. Fast HMR, ESBuild bundling, clean dev experience.

JWT Authentication

8 projects

Stateless auth on the backends that need accounts. HS256 tokens, row-level security, rate limiting.

Supabase

8 projects

Hosted PostgreSQL with auth, real-time subscriptions, row-level security, and edge functions.

ElevenLabs

8 projects

HD voice synthesis, music generation. Three-tier voice quality for different use cases.

Docker

8 projects

Containerized deployments. Multi-stage builds (Node 20 Alpine). Reproducible environments.

WebSockets

7 projects

Real-time everything. Live data feeds, multiplayer, collaborative features, streaming AI responses.

Prisma

7 projects

Type-safe ORM. Schema-first migrations. Generates TypeScript types from database schema.

Specialized — fewer projects, deeper use

RevenueCat

4 projects

Subscription management for mobile. Handles App Store and Play Store billing so I don't have to.

Playwright

4 projects

End-to-end testing. Browser automation, visual regression, CI integration.

shadcn/ui

3 projects

Copy-paste component library built on Radix UI. Accessible, customizable, no vendor lock-in.

Drizzle ORM

3 projects

Lightweight, type-safe alternative to Prisma. SQL-like API, minimal abstraction.

Python / FastAPI

2 projects

Scientific computing backends. scipy, statsmodels, scikit-learn, pandas, numpy. 240+ statistical endpoints in one project.

One-of-a-kind — specialized tools for specific problems

CesiumJS + PostGIS

3D globe with 106 data layers. Geospatial queries, SGP4 satellite propagation, GWR statistics.

Neo4j + Sigma.js

50,000-node knowledge graph at 60fps. Parallel queries, Dijkstra pathfinding, WebGL rendering.

astronomy-engine

Client-side orbital mechanics. Keplerian calculations with full precession and nutation. 1-arcminute accuracy.

VADER + AFINN NLP

Sentiment analysis, TF-IDF keyword extraction, named entity recognition, Flesch-Kincaid readability. Real computation, not AI guesses.

HMAC-DRBG + SHA-256

Cryptographic randomness from device sensors. Physical entropy harvesting for provably unpredictable outputs.

Capacitor

Web-to-native bridge. Wrap web apps for iOS and Android distribution with access to native APIs.

How I choose tools

Boring where it matters, interesting where it counts. The database should be PostgreSQL because PostgreSQL works. The auth should be JWT because JWT is understood. The build tool should be Vite because Vite is fast. These aren't exciting choices. They're correct choices. Excitement goes into the problem domain — the statistical engines, the knowledge graphs, the entropy harvesting, the real-time data fusion — not the plumbing.

I trust battle-tested libraries (scipy, statsmodels, scikit-learn) over custom implementations. The innovation is the interface and the integration, not the underlying math. When PsyStat Lab produces a t-test result, it matches SPSS because the computation underneath is scipy — the same engine the academic world trusts.

The right amount of complexity is what the problem actually requires. Three similar lines of code is better than a premature abstraction. A solo developer maintaining 15+ projects doesn't have the luxury of architectural tourism.

Transparency: some tool links on this site (Railway, ElevenLabs) are referral or affiliate links. If you sign up through one, I may earn a small commission or credit at no cost to you, and Railway gives new accounts $20 in credits. I only list tools I actually build with.