Cette page est publiée en anglais. Les contrats et politiques sont rédigés en anglais pour tous les marchés.
APIs that stay cheap as traffic grows
A typed boundary, a real database, and workers only when the request cannot finish in time. The $390 floor is for a focused API, not a mystery platform.
The handler rule
If the body is not a schema, it does not touch the database. Parse, reject with a 400 that names the field, then write. Same pattern on Next.js route handlers, Node services, and webhooks after the signature check.
This is the $390 backend and the $850 web product. We are tired of inherited repos that skip it.

Postgres, then a queue
Accounts and money live in Postgres. Spreadsheets are for the week before the quote. If the work cannot finish in a request, it goes on a queue with the same schema. Redis is a cache or a lock, not the source of truth.

Typed at the boundary
Every write path looks like this. No partial rows. No as-any on the way in. GraphQL is not the default; REST or tRPC-shaped routes until you have a client zoo that needs a graph.
import { NextResponse } from 'next/server'
import { z } from 'zod'
import { db } from '@/lib/db'
const Order = z.object({
sku: z.string().min(1),
qty: z.number().int().positive(),
})
export async function POST(request: Request) {
const parsed = Order.safeParse(await request.json())
if (!parsed.success) {
return NextResponse.json({ error: parsed.error.flatten() }, { status: 400 })
}
const order = await db.orders.create(parsed.data)
return NextResponse.json(order, { status: 201 })
}À partir de $390 USD · 3-7 weeks · env. 360 €