Under the hood.

A technical overview and current status of each of my software products — what each one runs on, what the data looks like, how it's deployed, and where it stands today. All four are built on modern TypeScript stacks with heavy AI-assisted development.

How the portfolio is built

Four products, one philosophy. Everything is TypeScript end-to-end. Everything sits on Supabase (Postgres) as the data layer — three of the four lean hard on PostGIS for geospatial work. Every repo ships through pull requests with a documented architecture (each has its own ARCHITECTURE.md and agent-ready conventions), and AI-assisted development is standard practice here, not an experiment. The codebases are written to be legible — to humans and to agents.

Languages
TypeScript everywhere — strict mode, shared types, Zod validation
Data Layer
Supabase Postgres across all four · PostGIS on three · Drizzle ORM where it fits
Workflow
GitHub PRs, green-build gates, docs-first repos, AI-assisted development as the norm
Hosting
Vercel, Railway, and Expo EAS depending on the product

GrandRapids.RealEstate (Neighborhood Atlas)

A hyperlocal real-estate knowledge graph for West Michigan: 15,000+ boundary polygons (counties down to subdivisions and condos), each enriched with ~140 columns of computed stats — walkability scores, drive times, school ratings, parcel-derived home values — plus live MLS listings geo-matched to every boundary. The largest and most mature codebase in the portfolio.

Frontend
Next.js 16 (App Router, SSG/ISR) · React 18 · Tailwind + shadcn/ui · Mapbox GL JS · Capacitor wrappers for iOS/Android
Backend
Next.js API routes (~250 endpoints) · 25+ scheduled cron jobs · ~400 total routes
Database
Supabase Postgres + PostGIS · 15K boundaries · 690K parcels · 26K amenity POIs · school districts & attendance zones
AI
Anthropic Claude for neighborhood narratives + automated fair-housing compliance scanning · OpenAI embeddings for semantic search
Integrations
MichRIC Spark RESO API (MLS sync every 5 min) · Google Maps & Mapbox geocoding · Resend · Lofty CRM · Google Search Console / IndexNow
Hosting
Vercel (production from main) · Supabase Storage + Transforms as the image CDN

The Church Map

A national geospatial collaboration platform: 241,000+ churches and 227,000+ Census/TIGER boundaries on an interactive map, with city-scoped community platforms layered on top — prayer journeys, community feeds, church profile claims, and digitally signed partnership agreements. Philanthropic by design.

Frontend
React 18 + Vite · Tailwind + shadcn/ui · Mapbox GL JS v3 · TanStack Query · TipTap rich text
Backend
Express (TypeScript) · ~250 route handlers · Drizzle ORM · 150+ SQL migrations
Database
Supabase Postgres + PostGIS · spatial functions for viewport queries, polygon search, ministry-saturation heatmaps
Data Pipelines
Google Places & OSM church imports · Census/ACS demographics · CDC PLACES health data · Mapbox Uploads API for national tilesets
Services
OpenAI (journey & solutions drafting) · Resend email · AWS S3 · PDF contract generation (pdf-lib + satori)
Hosting
Railway (auto-deploy from GitHub) · Cloudflare CDN/DNS

The Formation App

A multi-tenant spiritual-formation platform — web app plus native iOS and Android via Capacitor. The interesting architecture is the content model: an immutable template layer (the master journey and achievement blueprints) compiles into module instances, which deploy into per-community live data. One-way flow, enforced with database triggers and audit logging.

Frontend
React 18 + Vite · TypeScript strict · Tailwind + shadcn/ui · TanStack Query · ~14 routes, ~170 components
Mobile
Capacitor 7 → native iOS & Android · Firebase Cloud Messaging push · native Google & Apple Sign-In
Backend
Supabase end-to-end — Postgres, Auth (email/Google/Apple with account auto-linking), Realtime, Edge Functions (incl. automated Apple JWT rotation)
Payments & AI
Stripe community subscriptions (web flow, App Store-compliant) · OpenAI for in-app assistance

Compass KPI

A KPI-tracking and production-forecasting platform for real estate agents, teams, and coaches. The core domain logic is a forecast engine with strict separation between projected production, leading-indicator activity, and confirmed actuals — modeled with decay and timing rules, never mixed. Unlike the other three, Compass KPI is not a shipped product — it is an active work in progress, pre-launch, with the build happening right now.

App
Expo / React Native + React 19 · TypeScript monorepo · EAS builds & OTA updates · ~19 screens
Backend
Express (TypeScript) · Drizzle ORM · Supabase Postgres · 36+ versioned migrations · ~150 endpoints
Planned Integrations
Stream Chat (team messaging) · Mux (live coaching video) · Stripe subscriptions
Process
Spec-driven: architecture docs, written non-negotiables, sprint gates with per-sprint acceptance test suites

Questions about any of these?

For repo access, architecture docs, or a deeper walkthrough of any project, the fastest path is a short call.