← All projects

PHP 8 · MySQL · Private / commercial

CobbVision

A production SaaS platform for Subaru tuners. It ingests datalog CSVs from the Cobb AccessPort — the handheld ECU tuning device — and turns raw, messy sensor data into clean plots and actionable diagnostics.

PHP 8 · MySQL Stripe OAuth REST API iOS + Android companions Private repo
This is a private, commercial project, so what's below is a high-level overview of the architecture and my role — not a tour of the source. The companion mobile apps are public: iOS · Android.

The problem

The Cobb AccessPort logs dozens of engine parameters to CSV — but the format is a moving target. The same value shows up under many different column names depending on firmware, vehicle, and the logging profile a tuner chose: AF Sensor 1 Ratio (AFR), Engine Speed (RPM), Manifold Rel Pressure (Boost), and so on. Before you can plot or diagnose anything, you have to make sense of that chaos.

What I built

The stack

LayerTechnology
LanguagePHP 8.1+
Web serverApache + mod_rewrite
DatabaseMySQL / MariaDB
PaymentsStripe Elements + webhooks
AuthGoogle & Facebook OAuth
ChartsChart.js
Hosting / CIDreamHost · GitHub Actions

A whole ecosystem, not just a web app

CobbVision has grown into a multi-component platform. Because it runs on DreamHost shared hosting (a 50 MB upload cap, no ffmpeg, limited CPU time), the architecture is deliberately hybrid: heavy media and crypto work happens locally on the user's machine, and the web app stays authoritative for analysis, accounts, and the API.

ComponentRole
CobbVision (web app)PHP/MySQL backend — analysis, accounts, billing, REST API. The source of truth.
Desktop umbrella appA small installer/launcher — users pick which components to install; it fetches the right per-OS binary through a download proxy that hands back a short-lived URL plus a verified SHA-256.
AP ManagerSyncs AccessPort datalogs, presets, and maps; USB backup.
Media IngestA desktop agent that watches Video/Pictures/GPS folders, chunks video to fit the upload cap, and extracts GPS + EXIF locally before upload — feeding a map-based media gallery and photo-driven trip builder.
Smart EngineA distroless Docker container that normalizes, compresses, encrypts, and uploads datalogs — authenticating with a single engine key, with an app-layer-encrypted config envelope on top of TLS and optional GPU-accelerated local inference.
iOS & AndroidGPS track recorders that line up location with each datalog session.

It's a complete, self-funded product: I designed the data model, wrote the backend, built the billing and API, architected the hybrid client/server split, and shipped the desktop and mobile companions. The kind of end-to-end ownership that's hard to fake.

← Back to all projects