Projects

Production software I designed, built, and operate end-to-end. QA on Autodesk Maya and 3ds Max taught me exactly how software breaks — this is what I build when I own the whole stack, from schema to server. Every project below is live. Click through and use it.

Sign in to any of the apps as demo@evomedia.net — ask me for the password and it is yours. The open-source tools need no login at all.

evo.ehs

Beta · Live demo

Multi-tenant SaaS for environmental, health & safety compliance at multi-plant manufacturers. Tracks permit deadlines and evidence, manages incidents and corrective actions, runs OSHA incidence-rate reporting, and auto-discovers facility data straight from EPA and Texas TCEQ databases — with per-site live weather and NWS alerts. Passkey sign-in, Stripe subscription billing, and generated PDF reports.

  • Python
  • NiceGUI / Quasar
  • PostgreSQL
  • SQLAlchemy / Alembic
  • WebAuthn passkeys
  • Stripe billing
  • fpdf2
  • Docker
  • AWS EC2

evo-ai

Live · Ask AI

A multi-tenant Retrieval-Augmented Generation (RAG) platform I designed and built — it turns an organization's own records into a grounded, guarded, cited assistant that answers only from those records and declines everything else. Model-agnostic per tenant, private-capable, and deployed in production as the "Ask AI" capability inside evo.ehs.

  • FastAPI
  • LlamaIndex
  • Qdrant (hybrid)
  • fastembed
  • LiteLLM / Ollama
  • text-to-SQL
  • multi-tenant

evo.platform

Beta · Live

The multi-tenant foundation beneath these apps: shared authentication, per-tenant data isolation at the row level, and an API designed from the ground up as the platform's core — not an add-on bolted to an existing app. A common SDK means a new product ships in days instead of months. Four products run on it as tenants today — evo.ask-ai, evo.civilcode, evo.provensheet and evo.docketmail — ahead of an open-source release.

  • API Design
  • NestJS / Node.js
  • Prisma
  • PostgreSQL (row-level isolation)
  • JWT + WebAuthn
  • Stripe billing
  • Docker

// Internal platform — no public URL. Happy to walk through the architecture in an interview.

evo.civilcode

Beta · Live

Ask the Texas statutes a question and get an answer grounded in the statutes themselves — every response cited to a specific section, with its hierarchy, the passage it came from, a deep link to the official text, and the snapshot date. A second evo-ai RAG product: the complete statutory corpus retrieved from the official Legislative Council source, parsed into clean sections, and answered by a local model so nothing leaves the box. Guardrails are the product — it tells you what the law says, never what to do.

  • Next.js
  • evo-ai (RAG backend)
  • evo.platform SDK
  • NextAuth
  • Prisma / PostgreSQL
  • Tailwind
  • corpus parsing
  • citation gate

// Beta — retrieval verified by a 30-question citation gate before the product shipped.

evo.provensheet

Beta · Live

Turns the spreadsheet a business actually runs on into a shared web application — and proves the numbers survived. Drag in an Excel workbook and it is a working cloud app seconds later: formulas, not screenshots. Every formula is then recomputed and compared against the result Excel itself cached in the file, so you see cell-by-cell that the maths is intact before anyone relies on it — the report is the product, where everything else in this space asks you to trust the conversion. Multi-user and local-first, so edits survive a dropped connection and sync when it returns. The built-in sample is an 18-sheet industrial estimating workbook refined over 30 years of in-field use: 5,121 formula cells, all matching.

  • Next.js / React
  • IronCalc (WASM)
  • Dexie / IndexedDB
  • ExcelJS
  • Prisma
  • PostgreSQL
  • Docker
  • AWS EC2

evo.docketmail

Beta · Live

Automated court-record monitoring for Southeast Texas. Scheduled pipelines pull new filings, a React front end filters and selects them, and the matching direct-mail pieces are generated as merged Word documents ready for print. Built on evo.platform through its SDK — one of the four products running on it as tenants.

  • React 19 / Vite
  • TypeScript
  • FastAPI
  • SQLAlchemy 2
  • PostgreSQL
  • evo.platform SDK
  • docxtpl / python-docx
  • openpyxl
  • Docker

// Public records only — nothing sealed, nothing confidential, nothing bought.

evo.zscripts

Live · Open source

Open-source CLI built for AI-assisted development — one-word commands (zstart, zdeploy, zbackup) that wrap the routine start / deploy / backup chores so a coding agent doesn't have to reason through them. It saves tokens, but the real win is keeping the AI's context window focused on the actual work. The tooling I use to run everything on this page.

  • PowerShell

evo.locate

Live · Open source

Self-hosted IP geolocation API — no account, no API key, no per-query cost, and no visitor IP ever leaves the machine it runs on. It returns the same JSON field names as ip2location.io's free tier, so it drops into anything already written against that API by repointing the URL. Data comes from DB-IP's free Lite databases, held locally and refreshed monthly by the service itself.

  • Python
  • FastAPI
  • DB-IP Lite (MMDB)
  • Docker
  • pytest

// Built while evaluating the paid options. If it drops a third-party dependency, keeps user data private, or cuts a recurring cost, I build it — this one does all three. Ran in my own apps first, then went open source.

evo.confetti

Live · Interactive

Built because I needed a confetti system and was sure I could do better than what was available. Most effects throw dots along a ballistic arc, so they read as sparks. Paper is nearly all surface and almost no mass — it sheds its launch speed in a fraction of a second, then descends slowly, fluttering. This models that: air drag, tumble-driven flutter, and a numpad grid of twenty-five firing positions. One file, no dependencies, no build step. Headed for open source.

  • JavaScript (zero dependencies)
  • Canvas 2D
  • requestAnimationFrame
  • physics simulation

Self-hosted platform

Live

Everything here runs on infrastructure I built and operate end-to-end: a single nginx edge routing every site, containerized services, self-hosted email, Git, and full metrics and dashboards — on one AWS box, no managed PaaS. When something breaks at 2 a.m., I'm the one who fixes it.

  • Docker Compose
  • nginx
  • Let's Encrypt
  • AWS Route 53 / EC2
  • Postfix / Dovecot
  • Gitea
  • Prometheus
  • Grafana
  • Umami

evo.qaforaisystems

Case study

Systematic QA / SDET practice applied to a production LLM platform I designed and built — a documented defect loop against text-to-SQL, retrieval, and guardrail failure modes. Every bug tracked with a reproduction, root-cause analysis, a regression test, and verification against database ground truth.

  • Text-to-SQL validation
  • Retrieval eval harness
  • Guardrail regression suites
  • pytest
  • Ground-truth verification

Analytics dashboard

Live · Internal

Self-hosted visitor analytics for every site on this page — sessions, page views by path, status-code distribution, and per-visitor IP geolocation answered locally by evo.locate on the same box, so visitor data never goes to a third-party service. A single HTML dashboard served directly by the nginx edge, parsing its own access logs.

  • nginx
  • vanilla JS
  • Chart.js (self-hosted)
  • evo.locate (geo)

// Internal code — login-protected. Happy to demo it in an interview.

Want the whole picture? See my employment history, résumé, or get in touch — I'm available for new roles.