Development · 02 of 04

The system that doesn't exist off-the-shelf.

Web apps, internal tools, customer portals and integrations — custom-built where the SaaS market can't reach. Modular by default, boring on the inside, opinionated on the outside, and handed off with documentation your engineers will actually open.

50+Custom systems shipped
12 wkMedian time to first usable release
92%Still operating two years later
What you get

Software that fits. The way SaaS can't.

Six places custom software actually earns its keep over a SaaS subscription.

Web applications

SSR-first Next.js or Remix. Type-safe end-to-end. Fast on a mid-range laptop, accessible by default.

Next.js · Remix · TS

Internal tools & consoles

Ops dashboards, admin panels, back-office workflows. Built fast with Retool / Tooljet where it fits, custom where it earns it.

admin · ops · workflow

Integrations & APIs

The boring middle layer between your CRM, ERP, billing and warehouse — idempotent, observable, versioned, paged when broken.

webhook · iPaaS · queue

Customer portals

Branded, multi-tenant, role-scoped portals for clients, partners and vendors — with audit logs and SSO baked in.

SSO · RBAC · audit

Security & compliance

SOC 2, HIPAA, GDPR-ready from day one. Threat modeling, secrets, audit trails — not a checklist at the end.

SOC2 · HIPAA · GDPR

Modernization

Legacy systems brought forward without the "rewrite from scratch" trap. Strangler-fig, contracts at the seams, value first.

strangler-fig · seams
How we build

Modular, boring, owned.

Five layers that recur in every custom system we ship. Each one swappable, each one documented, each one tested.

01 · ExperienceWeb · admin · portalNext.js / Remix · design system · a11y02 · APItRPC / GraphQL · typed contracts · versioned03 · DomainUse casespolicies · invariantsEvents & workflowsqueues · sagas04 · PersistencePostgres · Redis · S3 · Search05 · Cross-cuttingAuth · audit · observability · feature flags · IaC

The exciting part is the domain. Everything else is plumbing.

We spend our taste budget on the layer where your business actually lives. The rest — auth, observability, audit, IaC — comes pre-wired from a starter we maintain.

  • 01
    Typed end-to-end

    One type from the database column to the React form field. Refactors are mechanical, not religious.

  • 02
    Modular boundaries

    Bounded contexts, clean API contracts, in-process for now but ready to extract when the volume earns it.

  • 03
    Boring choices, defended

    Postgres, queues, plain HTTP. We won't pick a CockroachDB unless we can write down why in a paragraph.

  • 04
    Documented as we go

    ADRs for the decisions, READMEs that get linted in CI, runbooks for the things that page someone.

Tech stack

A boring, capable stack.

We pick tools your next hire will already know. The novelty budget goes to the domain.

Frontend

React · Next.jsRemixVue · NuxtSvelteKitTailwind

Backend

Node · TypeScriptGoPython · FastAPIRails.NET

API

tRPCGraphQLOpenAPI · RESTgRPC

Data

PostgresRedisSQLite + LitestreamElasticsearch

Workflows

TemporalInngestTrigger.devBullMQ

Identity

Auth.jsClerkAuth0WorkOS

Internal tools

RetoolTooljetTremorRefine

Hosting

Vercel · NetlifyFly.io · RenderAWS · GCP · Azurek8s where it earns
From vision to victory

Useful release in weeks. Not a launch in a year.

We'd rather ship the first useful slice in week four than the whole rebuild in month twelve.

01
Week 1–2
Sharpen the scope

Workshop, walkthroughs, a real prototype. The doc we'll defend at the steering committee.

02
Week 3–4
Foundations

Auth, design system, primary domain model, CI/CD, observability. The boring half done well.

03
Week 5–10
Iterate features

Two-week increments. Every Friday: usable software, telemetry, customer feedback if relevant.

04
Week 11–12
Harden & document

Perf, security pass, runbooks, ADRs, training material.

05
Ongoing
Hand off or operate

Your team takes it from here, or we keep operating with a quarterly review.

Where it fits

Three custom systems still running.

Each one outlasted the SaaS shortlist that came before it.

Pattern · Ops console · Logistics

The console that retired four SaaS tools.

Internal ops platform for a 3PL operator. Replaced four overlapping SaaS tools with a single role-scoped console. Same year payback.

4 → 1Tools
−$340kAnnual contracts
Next.jsPostgrestRPC
Pattern · Customer portal · SaaS

A portal that kept the enterprise deal.

White-labeled customer portal for an enterprise SaaS. Multi-tenant, SSO-first, audit-logged. Unblocked two procurement reviews.

2 dealsUnblocked
SOC 2Day-one ready
RemixWorkOSPostgres RLS
Pattern · Integrations · Fintech

The middle layer between 11 systems.

Idempotent integration platform connecting CRM, billing, ERP and the warehouse for a fintech. Replaced a bag of Lambdas and a Zapier mess.

11Systems unified
0Replays last quarter
TemporalGoOpenAPI
Why ETY

Custom that doesn't become legacy.

50+Custom systems shipped across web, internal tools and integrations.
92%Of systems we've shipped are still serving production two+ years on.
ADRsArchitectural decisions documented and version-controlled. Every project.
BoringThe default. Novel choices defended in writing, not slipped into a PR.

Custom where it earns it.

Bring us the system you can't buy off the shelf, or the SaaS sprawl you'd like to retire. We'll come back with a scope, an honest build vs. buy memo, and a 12-week plan.