22 tools · 6 layers · all in production

Every tool we build on, and why.

Each of these is running in production right now - including on EduHost, the product we run ourselves.

01

Frontend

Rendered on the server, hydrated only where it earns it.

Next.js

App framework

Server components keep the JavaScript we ship small without giving up interactivity.

React

UI library

The hiring pool is deep, so your product is never one developer away from stalling.

TypeScript

Language

Catches the class of bug that only shows up in production at 2am.

Tailwind CSS

Styling

Styles live next to the markup, so deleting a component deletes its CSS too.

Three.js

3D / WebGL

For the moments a static image can't carry - used sparingly, never for decoration.

02

Backend

Small services with clear boundaries, not a monolith and not a swarm.

Node.js

Runtime

One language across the stack means one team can own a feature end to end.

Express

HTTP layer

Boring, stable, and unopinionated enough to survive a decade of changes.

Zod

Validation

Every request is validated at the edge of the system, so bad data never reaches the database.

RabbitMQ

Events

Services talk through events instead of calling each other, so one going down doesn't cascade.

03

Data

The right store for the shape of the data - not one database for everything.

PostgreSQL

Relational store

For anything with real relationships and transactions: billing, records, schedules.

MongoDB

Document store

For content and documents whose shape changes faster than a migration cycle.

Redis

Cache & sessions

Sessions, rate limits, and anything that should disappear on its own.

pgBouncer

Connection pooling

Keeps Postgres alive when traffic spikes instead of exhausting connections.

04

Infrastructure

Your infrastructure, your accounts. We set it up and hand over the keys.

Docker

Packaging

The container that passes CI is the container that runs in production.

Traefik

Edge & TLS

Routing and certificates renew themselves - no expired-SSL outage at midnight.

GitHub Actions

CI/CD

Merging is deploying. No one keeps a deploy script on their laptop.

Prometheus

Metrics

We watch latency and error rates, not just whether the server responds to a ping.

Let's Encrypt

Certificates

Automatic issue and renewal, so HTTPS is never a recurring chore.

05

AI

Model providers stay swappable. None of them get to become the product.

Google Gemini

Assistants & extraction

Strong at long documents, and priced so an in-product assistant stays viable.

OpenAI

Alternate provider

Kept as a second option so a price change or outage isn't a rewrite.

06

Integrations

Bought, not built - these are solved problems.

Razorpay

Payments

Settles straight into your account. We never sit between you and your money.

Cloudinary

Media

Uploads, transforms, and a CDN, without building an image pipeline.

And what we won’t reach for

Every stack choice is also a choice about who you can hire, and how easily you could leave us.

No-code platforms for core products

Fine for a landing page. But when the platform changes its pricing or its limits, you can't fork it, and you can't take your logic with you.

Frameworks younger than about two years

We'll happily try them on our own products first. Yours isn't where we find out how the upgrade path works.

Managed services that hold your data hostage

If getting your data out means writing a scraper, it was never really your data.

Want this stack on your product?

Tell us what you’re building and we’ll tell you which half of it you actually need.