Proof / the work, open to inspect

Open the product.
Follow the thinking.

Publishing software, customer workflows and the infrastructure behind them. Explore the live sites below, or read a case study to see what I built and how I checked it.

Live work

Take a look around.

These 11 URLs answered on 2026-09-22. The captures show the public interfaces; each link opens the current site.

From the work
Glacier Ice Cream
Glacier Ice Cream

01 / Local business site · owner console

Glacier Ice Cream

A full production site for a Fort Collins ice cream parlor. Customers browse the menu, order online and pay by card. The owner signs into a console and edits hours, prices and content themselves — no redeploy, no ticket to me. Every form on the site captures a lead into a CRM rather than an inbox. Built on Next.js and TypeScript with Supabase for data, Stripe for payments and Vercel for delivery. Live at glacierfortcollins.com. Click through it — the menu, the cart and the checkout are all real, none of it is a mockup.

Open glacierfortcollins.com ↗
What to try
  1. Browse the menu and add an item to the cart
  2. Reach a real Stripe checkout
  3. Submit the contact form and watch it accept a lead

Next.js · TypeScript · Supabase · Stripe · Vercel

From the work
Ice Cream Fort Collins
Ice Cream Fort Collins

02 / Publishing platform · content pipeline

Ice Cream Fort Collins

A city magazine that keeps moving between issues. A scheduled pipeline drafts and files local content, a directory keeps venue records current, and a weekly edition assembles from both. It also consumes a public events feed from a separate platform I built, so two independent systems stay in sync without anyone copying data between them by hand — the part most content sites never get to. Next.js and TypeScript on Supabase, deployed on Vercel. Live at icecreamfortcollins.com.

Open icecreamfortcollins.com ↗
What to try
  1. Open the current issue and the 2026 rankings
  2. Browse the directory the pipeline maintains
  3. Follow a listing sourced from the events feed

Next.js · TypeScript · Supabase · Scheduled jobs · Vercel

From the work
CNE Fit Tracker
CNE Fit Tracker

03 / Consumer member app · booking

CNE Fit Tracker

A member app for a Boulder personal-training gym. A prospect requests a free trial, the request writes a lead record, and the booking step pulls real appointment slots from a scheduling service and writes the confirmed booking back to it. No third-party booking widget — the whole rail is ours, so the gym owns its calendar and its customer data. Members log workouts, nutrition and progress; the owner sees it from an admin console. Next.js PWA in TypeScript on Supabase, deployed on Vercel. Live at cnefit.app.

Open cnefit.app ↗
What to try
  1. Start the free-trial request flow
  2. See real appointment slots returned, not a static list
  3. Reach the member signup

Next.js · PWA · TypeScript · Supabase · Vercel

From the work
The Fort List
The Fort List

04 / Events platform · public API

The Fort List

A nomination-gated events platform for Fort Collins. Visitors browse what is on and subscribe to a newsletter that enrolls them in a real sequence; members sign in for the private list. It publishes a documented public JSON feed that a separate magazine site consumes — a working integration between two systems, which is harder and more useful than either site alone. Next.js and React on Supabase, with AWS SES for mail and signed JWT sessions. Live at thefortlist.com.

Open thefortlist.com ↗
What to try
  1. Browse live music and venues
  2. Subscribe and get enrolled in a real sequence
  3. Hit the public events endpoint and read the JSON

Next.js · React · Supabase · AWS SES · JWT · Vercel

From the work
TrendOS
TrendOS

05 / Market intelligence · dashboards

TrendOS

A market-intelligence platform that runs scheduled collectors against dozens of public sources, deduplicates what comes back, and surfaces ranked signals in an authenticated dashboard. It also ships a status surface that reports its own pipeline health, so a collector that silently stops returning data shows up as broken instead of quietly reporting zero — the failure mode that makes most scraping projects untrustworthy after month two. Python and FastAPI for collection, Next.js for the dashboards, Postgres for storage. Live at trend-os.io.

Open trend-os.io ↗
What to try
  1. Open the public trends and topics surfaces
  2. Read the status page reporting its own pipeline health
  3. See source counts and freshness stated with the data

Python · FastAPI · Postgres · Next.js · Scheduled collectors

From the work
Local Business Factory
Local Business Factory

06 / The factory the rest come out of

Local Business Factory

The system the other client sites on this page came out of. One brand config drives scaffolding, wiring and deployment, so a new business site arrives with its rails already connected instead of being reassembled by hand every time. A shared component package means a fix made once reaches every site built on it. That is the difference between an agency that rebuilds and a system that compounds. TypeScript and Next.js in an npm workspace, deployed on Vercel. Live at localbusinessfactory.com.

Open localbusinessfactory.com ↗
What to try
  1. Scroll to the running client tiles — each links to a real build
  2. Open any tile and land on the live site
  3. Read the per-tile launch state and capture date

TypeScript · Next.js · npm workspaces · Supabase · Vercel

From the work
Teneo
Teneo

07 / Long-form content generation

Teneo

A platform that turns one idea into a finished long-form manuscript, a cover and publish-ready files, then puts them behind a storefront a reader can inspect. Multi-stage generation with structure planned before drafting, not one long prompt — which is why the output holds together across tens of thousands of words. This is the system behind the book work I delivered before moving into automation, and it still runs today. Next.js front end on AWS with Stripe checkout. Live at teneo.io.

Open teneo.io ↗
What to try
  1. Start the free preview flow from one idea
  2. Read a finished title in the public library
  3. Inspect a generated storefront

Next.js · AWS · DynamoDB · Stripe · LLM pipelines

From the work
traviseric.com
traviseric.com

08 / This site · build record

traviseric.com

The site you are reading. It pulls my GitHub activity through its own API routes and renders build pace and focus over real time windows, with the limitations printed next to every number rather than buried. It also runs a consulting enquiry path that was tested end to end in production — flagged test submissions written, asserted in the database, then deleted. Next.js 15 and TypeScript on Supabase, with NextAuth and Stripe, deployed on Vercel. Live at traviseric.com.

Open traviseric.com ↗
What to try
  1. Open /now for build pace over real windows
  2. Open /projects for the tracked build registry
  3. Use the enquiry path at the bottom of this page

Next.js 15 · TypeScript · Supabase · NextAuth · Vercel

From the work
Conversos
Conversos

09 / Support agent · reads app state

Conversos

A support agent that answers from an application's own state rather than a folder of help articles. It reads the record in front of the customer, so it can say what is true for that account instead of what is true in general, and it hands off when the answer is not in the data. The same agent serves multiple tenants, each one scoped to its own knowledge and its own records. Next.js and TypeScript on Supabase, deployed on Vercel. Live at conversos.ai — open it and ask it something specific.

Open conversos.ai ↗
What to try
  1. Open the product and read what it grounds answers in
  2. Follow the tenant and handoff model
  3. Compare it with a docs-only chatbot

Next.js · TypeScript · Supabase · Vercel

From the work
CourtDocs
CourtDocs

010 / Document workflow · filings

CourtDocs

A focused workflow for people preparing court documents: assemble a filing, keep exhibits and versions straight, and produce something a court will accept. It is built around the order the work actually happens in rather than a generic document manager, which is the part that makes it usable under deadline. Next.js and TypeScript, deployed on Vercel. Live at courtdocs.io.

Open courtdocs.io ↗
What to try
  1. Open the workflow and follow a filing end to end
  2. See how exhibits and versions are kept together
  3. Read the output format it produces

Next.js · TypeScript · Vercel

From the work
Gatherflash
Gatherflash

011 / Event photo product · review room

Gatherflash

The review room for an event-photo product. A partner signs in with Google, walks a concept gallery and a cabinet workshop, and changes the numbers in a build-cost bench that recalculates as they type — so a hardware decision gets argued against live figures instead of a static quote. Protected routes, real sign-in and sign-out, and a browser probe that walks the whole authenticated path before each release. Next.js and TypeScript, deployed on Vercel. Live at gatherflash.com.

Open gatherflash.com ↗
What to try
  1. Open the public side of the product
  2. See the sign-in gate on /admin
  3. Ask me to walk the review room and cost bench with you

Next.js · TypeScript · Google OAuth · Vercel

Under the surface

The connections
behind the products.

Owner console

Every site ships with a backend the business owner signs into — edit hours, prices and content, see leads and activity. No agency ticket, no redeploy.

glacierfortcollins.com/admin ↗

a real owner login — the same console runs on cnefit.app/admin

Scheduling, owned

Appointment booking running on software I built rather than a rented calendar widget, so the business owns its calendar and its customer records.

the booking page ↗

real availability — it is the same rail the button at the top of this page uses

Systems that talk to each other

A documented public feed one platform publishes and another consumes, so two independent systems stay in sync without anyone copying data by hand.

the live JSON feed ↗

raw versioned JSON with real events — the magazine site renders this exact response

Server-verified scoring

A shared high-score rail any site can mount. The server replays the game from a command log and recomputes the score, so a forged submission is rejected instead of trusted.

the arcade on a client site ↗

a playable game whose leaderboard is validated server-side

Systems that report their own health

Pipelines publish their own status, so a collector that silently stops returning data shows up as broken rather than quietly reporting zero — the failure mode that makes most automation untrustworthy after month two.

the status surface ↗

a system grading its own pipeline in public

Work with me

Start with the work
that needs to get done.

I run a business.

Let's look at how customers find you, contact you and take the next step. We’ll decide what’s worth fixing first.

Talk through your business

Prefer a written website review? Get your free Brand Pass.

I'm building a system.

Bring the workflow, the existing tools and the part that gets stuck. We'll work out the useful next move and its scope.

Discuss a system