Toolkit

Stack

What I build with, ranked by actual usage across 15+ projects. Not a wish list — a frequency map.

Primary Stack — used in most projects

TypeScript

11 of 15 projects

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

JWT Authentication

10 of 15 projects

Stateless auth across every backend. HS256 tokens, row-level security, rate limiting.

Claude API

9 of 15 projects

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

React / React Native

9 of 15 projects

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

WebSockets

8 of 15 projects

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

Tailwind CSS

8 of 15 projects

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

Express.js

7 of 15 projects

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

PostgreSQL

7 of 15 projects

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

Vite

7 of 15 projects

Build tool. Fast HMR, ESBuild bundling, clean dev experience. Replaced Webpack everywhere.

Also build in — used in multiple projects

Railway

6 projects

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

Prisma

5 projects

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

RevenueCat

5 projects

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

Supabase

4 projects

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

ElevenLabs

4 projects

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

Stripe

4 projects

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

Vercel

4 projects

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

shadcn/ui

4 projects

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

Vitest

4 projects

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

Specialized — deep expertise, fewer projects

Python / FastAPI

3 projects

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

Expo / React Native

3 projects

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

Docker

3 projects

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

Next.js

2 projects

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

Drizzle ORM

2 projects

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

Playwright

2 projects

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

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 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.