repositorypackage
0.2.0
Repository: https://github.com/raeperd/kickstart.go.git
Documentation: pkg.go.dev
# README
kickstart.go
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.
This project was first introduced in Gophercon Korea 2024, See session in this link(in Korean) and see presentation in this link(in english)
Inspired by Mat Ryer & earthboundkid and even kickstart.nvim
Features
- 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. using
embed
package - Debug information: Provides various debug metrics including
pprof
andexpvars
. - Access logging: Logs http request details using
slog
. - Panic recovery: Catch and log panics in HTTP handlers gracefully.
- Fully documented: Includes comments and documentation for all exported functions and types.
Getting started
- Use this template to create a new repository
- Or fork the repository and make changes to suit your needs.
Requirements
Go 1.22 or later
Suggested Dependencies
Build and run the server
$ make run
- this will build the server and run it on port 8080
- Checkout Makefile for more
Endpoints
- 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.
How to
How to start a new project
- 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
How to remove all comments from the code
$ sed -i '' '/^\/\/go:embed/! {/^\s*\/\/.*$/d; /^\s*\/\*\*/,/\*\//d;}' *.go