ABOUT WHITTAKERTECH
We ship the discipline.
Rails already has the primitives. What it doesn't have is the judgment for assembling them. That's where most production bugs live, and that's what we build.
The gap we work in
Great tools stay unopinionated. Someone has to have the opinions.
Good libraries stay neutral so they can serve everyone. That's the right call for them, and it leaves every team to reinvent the same integration decisions, usually under deadline and usually slightly wrong.
Each WhittakerTech engine picks one of those domains and ships the missing opinions as a gem you can install.
- Polymorphism Works: belongs_to polymorphic: Gets wrong: Joins, roles, ownership, and history Poly
- Money Works: Money columns and the money gem Gets wrong: Duplicated columns, currency handling, auditable balances Midas
- Record lifecycle Works: Soft-delete gems and status columns Gets wrong: Draft, archived, and trashed states with no rules between them Oscar
- Time Works: Date and time columns Gets wrong: Recurring spans, rescheduling, and the history of what moved Aeon
- Validation Works: ActiveRecord validations Gets wrong: The same rules rewritten by hand for the browser Veritas
How we build
Standard protocols, opinionated assembly.
Bricks and instructions
The standards are the bricks
Devise, Stripe, KMS APIs, and plain Rails conventions are the bricks. Our engines are the instructions nobody else prints.
Decoupled
Engines don't know about each other
Your application connects them, never the engines themselves. Adopt one without taking on the rest.
Documented
Documentation is infrastructure
We build our own documentation tooling and give engines documentation sites of their own. Docs get the same care as the code.
Admission test
What does everyone integrate wrong here?
Before we build an engine, we answer that question crisply. If we can't, it's a library, not a WhittakerTech engine.
In the workshop
What we're building, live.
Every public WhittakerTech repository, most recently active first. Updated Nov 2, 2026.
Released
-
Poly
v1.3.0Data primitives
Polymorphic associations with type-safe joins, roles, ownership, and history.
-
Midas
v0.5.0Data primitives
Money as a first-class value, with an auditable double-entry ledger.
In development
-
Codex
Tooling
The documentation builder behind every engine's API docs.
Last commit Sep 23, 2026 Codex on GitHub -
MosaicJS
Tooling
Snapshot-based drag-and-drop for the browser.
Last commit Aug 7, 2026 MosaicJS on GitHub -
Oscar
Data primitives
Lifecycle states for records, from draft to purged, with declared transitions.
Last commit Aug 2, 2026 Oscar on GitHub -
Aeon
Data primitives
Recurring time spans and rescheduling that behave like a native column.
Last commit Jul 14, 2026 Aeon on GitHub -
Virgil
Tooling
Headless rendering for Open Graph images.
Last commit Dec 30, 2025 Virgil on GitHub -
Veritas
Data primitives
Model validation rules, shared with the browser instead of rewritten by hand.
Last commit Dec 6, 2025 Veritas on GitHub
The founder
Lee Whittaker Founder & engineer
Lee has spent more than ten years building production Rails systems: rescuing legacy apps, chasing data-integrity bugs that passing tests didn't catch, and making pipelines faster without making them bigger. The engines are the opinions that work left behind.
Before software, Lee worked in visual effects and video compositing. That's why WhittakerTech engines arrive with brand systems, icons, and documentation sites instead of a README and a shrug. He also runs the studio's infrastructure himself, from CI to documentation builds to error tracking, on hardware he maintains.
His consulting work, client case studies, and career history live on his personal site.