Build a production-grade REST API in Go, step by step
A hands-on series: start with under 200 lines of in-memory CRUD and end with Postgres, JWT auth, rate limiting, TLS and a full observability stack.

Series
A hands-on series: start with under 200 lines of in-memory CRUD and end with Postgres, JWT auth, rate limiting, TLS and a full observability stack.
A hands-on series: start with under 200 lines of in-memory CRUD and end with Postgres, JWT auth, rate limiting, TLS and a full observability stack.

Create, read, update, delete: the smallest useful HTTP API in Go, with no framework and no database.
Make data survive a restart, and remove the global variable while we are at it. Series: Build a production-grade REST API in Go · Part 2 of 17 Where we are: the in-memory API from Part 1. In Part 1 w
Ten problems from Part 1, fixed. This is the post that turns a demo into something you could put behind a load balancer. Series: Build a production-grade REST API in Go · Part 3 of 17 Where we are: t
Ports, timeouts and limits don't belong in code. Move them to the environment, and refuse to start with nonsense values. Series: Build a production-grade REST API in Go · Part 4 of 17 Where we are: t
Adding "orders" is where a codebase either stays tidy or starts to rot. We'll make it tidy. Series: Build a production-grade REST API in Go · Part 5 of 17 Where we are: the configurable API from Part