ProspectForge
An internal contact-sourcing platform that replaced a third-party SaaS vendor — FastAPI and Next.js over PostgreSQL, with a self-hosted scraping stack, on Docker Compose.
Booking engines, contractor tools, payment flows, subscription infrastructure, and client sites built to last beyond launch day.
Production systems with operational and revenue impact.
An internal contact-sourcing platform that replaced a third-party SaaS vendor — FastAPI and Next.js over PostgreSQL, with a self-hosted scraping stack, on Docker Compose.
The core operations platform at Educational Travel Adventures — a full-lifecycle group travel ERP handling sales pipeline and lead qualification, itinerary building, reservations, vendor management, passenger logistics, payment processing, communications, and 70+ reports across finance, sales, marketing, and operations.
A mobile-first PWA for tour guide contractors at Educational Travel Adventures — itinerary and medical info access, document workflows, daily and summary reporting with live auto-save, expense tracking with receipt uploads, SMS messaging to travelers, calendar scheduling, and manager-side administration.
An AI-powered chat system built with OpenClaw and Claude, giving managers at Educational Travel Adventures natural-language access to business intelligence and the ability to safely prototype platform changes themselves — each in an isolated, sandboxed copy of Tourbot.
A Python and Flask service that probes Educational Travel Adventures' fleet of web, database, and cron servers and renders a single-page health view — paired with a hardened Linux host that lets a Claude Code agent operate safely across that infrastructure.
The customer-facing side of Educational Travel Adventures — group leaders, parents, and travelers self-serve account creation, trip registration, payment plans, and communication. Inherited from a previous IT team and substantially rebuilt by me and the team I lead.
The cron-driven pipeline that turns scheduled customer payments into NACHA-formatted batch files and submits them to the bank for ACH processing — the system that actually moves the money. Inherited the original implementation; took ownership, modernized the runtime, and kept it running through platform migrations.
A six-round, profile-driven performance pass on Tourbot's group manifest page — the document staff print before every trip — taking page loads from 5–7 seconds to about 1 second by eliminating N+1 queries, batching in-request prefetches, and adding a targeted history-table index.
Booking, Price_statement, and ReturnPaySked constructors each ran helper queries per row of a 50-passenger group — almost all of it avoidable repeat work.
Booking::__construct skippable so 50 passengers hydrate from a single batched IN(…) query, and added a Price_statement::prefetch() layer — static caches and batched queries warmed once per request, with per-instance fallbacks for other callers. Replaced a leading-wildcard LIKE in the cancellation-history query with an Action_Type column and composite index, cutting EXPLAIN's rows-examined from 4,165 to 1.
A performance pass on Tourbot's internal alerts page — a heavily-trafficked screen that staff hit repeatedly throughout the day — taking load times from 5–10 seconds down to under 1 second by replacing per-request query fan-out with a pre-computed cache table.
A multi-year, codebase-wide modernization of Educational Travel Adventures' platform — PHP 5.6 to PHP 8, MySQL 5.7 to MySQL 8.4 LTS, and CentOS 7 to Rocky Linux 9 — done in production, without freezing the company.
mysql_* calls, declared properties on long-lived models, tightened type signatures. Shipped the MySQL 5.7 → 8.4 migration plan and the CentOS 7 → Rocky Linux 9 cutover, with deployment notes, schema-compatibility audits, and per-server runbooks. Coordinated cross-database export/import for customer accounts, dual-running old and new database servers during transition. Mentored the developer working alongside me on the same codebase.
Focused builds for payments, publishing, and straightforward business visibility.
A subscription payment system with Stripe integration for recurring revenue and secure transaction handling.
A marketing site for a catering business — clear presentation, service visibility, and lead generation.
A curated set of personal builds. The broader archive lives at blog.stephens.page/projects/.
A fertility tracking PWA built around the Creighton Model — offline support, auto-computed charting, syncing, and provider sharing.
A waterfall white-noise player for focus and sleep — shipped as web (PWA) and Android shells driven by one headless Rust core, with the same core architected to extend to macOS, Windows, iOS, and watchOS.
dispatch(command) → {snapshot, effects} boundary serialized as one JSON wire shape, so every shell is a thin native UI over shared Rust logic. Shipped today: the web (PWA) and Android shells, bound via wasm-bindgen and UniFFI (Kotlin) with native media integration (Web Audio, Media3) and an installable, offline PWA. The same boundary is designed to extend to the Apple and Windows shells (UniFFI/Swift, a hand-rolled C ABI + P/Invoke) — in progress.
A medieval cat guild management game — 14 minigame types, an explorable town map, a 7-chapter narrative arc, and Fire Emblem-style bond conversations between cats.
An MCP server that gives AI assistants access to the Magisterium API, returning Church teaching with source citations.
A self-hosted nutrition tracker built as a MyFitnessPal replacement — barcode scanning, recipe management, API-backed food search, charts, and offline support.
A progressive web app for tracking Dr. Greger's Daily Dozen food recommendations — offline support, progress visualization, and a Catholic stewardship framing of daily nutrition.
A PWA for a parish men's group — tracking prayer, fasting, almsgiving, and fraternity through a shared Lenten rule of life.
A multi-tenant possessions tracker that operationalizes the Minimalists' 90/90 Rule — log when you use the things you own, see what's due to be used next, and decide what to declutter.
A full-stack event-operations platform (built for a wedding) — invite-based RSVPs, guest management, registry tracking, photo uploads, travel details, and admin tooling.