Minimalistic http server template in go that is:
- Small (less than 300 lines of code)
- Single file
- Only standard library dependencies
Not a framework, but a starting point for building HTTP services in Go.
Inspired by Mat Ryer & earthboundkid and even kickstart.nvim
- Graceful shutdown: Handles
SIGINT
andSIGTERM
signals to shutdown gracefully. - Health endpoint: Returns the server's health status including version and revision.
- OpenAPI endpoint: Serves an OpenAPI specification.
- Debug information: Provides various debug metrics including pprof and expvars.
- Access logging: Logs request details including latency, method, path, status, and bytes written.
- Panic recovery: Catch and log panics in HTTP handlers gracefully.
- Fully documented: Includes comments and documentation for all exported functions and types.
- Use this template to create a new repository
- Or fork the repository and make changes to suit your needs.
Go 1.22 or later
$ make run
- this will build the server and run it on port 8080
- Checkout Makefile for more
- GET /health: Returns the health of the service, including version, revision, and modification status.
- GET /openapi.yaml: Returns the OpenAPI specification of the service.
- GET /debug/pprof: Returns the pprof debug information.
- GET /debug/vars: Returns the expvars debug information.
- Use this template to create a new repository
- Or fork the repository and make changes to suit your needs.
- Find and replace all strings
raeperd/kickstart.go
with your repository/image name
$ sed -i '' '/^\/\/go:embed/! {/^\s*\/\/.*$/d; /^\s*\/\*\*/,/\*\//d;}' *.go