Web development
Customer-facing web products, internal tools, and the APIs behind both. Mostly TypeScript, React and Next.js on the front; Node, Python or Go behind it.
Start a projectWhat’s included
- Web application development
- Accounts, billing, dashboards, admin screens. The unglamorous parts are most of the work, and we plan for them.
- API and backend
- REST or GraphQL, background jobs, webhooks, and third-party integrations that fail in ways you can see.
- Front-end engineering
- Joining an existing React codebase to fix performance, accessibility or a design system that has drifted.
- Legacy modernization
- Moving off an old framework or server one piece at a time, with the site up the whole way.
- Internal tools
- Back-office screens for the operations team who are currently running the business out of spreadsheets.
- Maintenance
- Dependency upgrades, security patches and small changes on a schedule we agree on up front.
See it working
Before · one await after another
710 ms
After · Promise.all
320 ms
How it usually runs
- 1. Scope
1–2 weeks
User flows, data model, integrations and hosting written down, with a fixed list of what the first release does.
- 2. Build
2-week cycles
A staging link that updates as work merges, and a short written update at the end of each cycle.
- 3. Hand over
Production deploy, monitoring and alerts, and a walkthrough recorded for whoever maintains it next.
What you have at the end
- Working software deployed to your hosting account
- Infrastructure described in code, so it can be rebuilt
- Tests that run on every pull request
- A README a new developer can follow on day one
Stack
- TypeScript
- React
- Next.js
- Node.js
- Python
- Go
- PostgreSQL
- Redis
- AWS
- Google Cloud
- Vercel
- Docker
- Terraform
From our engineering notes
What went wrong, the code that fixed it, and what we do differently now.
- Webhooks arrive twice. Build for it.Payment and messaging providers retry on timeouts, so the same event can show up more than once. Handling it takes one table and one transaction.
- The page was slow because it asked three questions one at a timeServer-rendered pages often wait on independent requests in sequence. Tracing makes it obvious; the fix is usually a few lines.
Questions we get
Do you work with our existing developers?
Often. We work in your repository, follow your review process, and pair with your team on the parts they'll own afterwards.
Who owns the code?
You do. It lives in your repository and your cloud accounts from the start.
Tell us what you're working on.
A few paragraphs is plenty. We'll read it, reply by email, and if it looks like a fit, set up a 30-minute Google Meet with an engineer.