Esta página se publica en inglés. Los contratos y políticas se redactan en inglés para todos los mercados.

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.

From $390 USD · 3-7 weeks

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.

Abstract illustration representing backend services

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.

Cloud system architecture diagram

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.

app/api/orders/route.tstypescript
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 })
}

Desde $390 USD · 3-7 weeks · aprox. 360 €

Comparar paquetesIniciar un proyecto