Blaze
A minimal Go template for fast, maintainable HTTP services, built entirely on the standard library.
Blaze is a starting point for writing backends in Go: project structure, HTTP error handling, request validation, structured logging and a working real-world CRUD API example. You clone it, run make, and you have a service that starts.
The idea behind it is deliberately conservative: everything rests on net/http, Go's standard library. No frameworks, no proprietary abstractions, no component you cannot replace.
The problem with frameworks
Choosing a framework for a backend service means accepting a constraint that will last as long as the project. Router, middleware, handlers, request context: once written in a framework's dialect, they are no longer Go code, they are that framework's code. Changing it, or even just replacing one piece, means rewriting.
It is a cost you pay late and all at once: when the framework slows development down, when it stops being maintained, when you need a library that does not integrate well, when someone new on the team has to learn the conventions before they can read the code.
The choice: standard library only
Blaze introduces no abstraction on top of net/http. Handlers are standard handlers, middleware is standard middleware, the interfaces are the ones every Go developer already knows.
The practical consequence is that every component is interchangeable. The included router is chi, chosen precisely because it is compatible with net/http: replacing it with another router, or with nothing but the standard library, does not require touching the handlers. The same goes for the logger, validation and storage. There are four dependencies in total, all replaceable in isolation.
It is also why the code is readable straight away: there is nothing magic to understand before you can contribute. Anyone who knows Go already knows Blaze.
Performance
There is no layer of indirection between the request and the handler, so there is no overhead to pay: performance is that of net/http, which in Go is already one of the fastest HTTP implementations available in a standard library. A framework can, at best, only come close to that figure.
The compiled binary is self-contained and needs no external runtime. AWS Lambda support is available on a dedicated branch, with no changes to the application code.
What it includes
A conventional structure with a clean separation between business logic and API logic, mapping of service errors to HTTP errors, payload validation, structured logging with zerolog, strict linting configured. The included example implements a complete CRUD API with sqlite3 storage and SQL migrations applied at startup.
Open source
Blaze is released under the MIT licence and can be used as a GitHub template: you start from an already configured repository, with no scaffolding to set up.