@@ 4,16 4,17 @@
* [Issue Tracker](https://todo.sr.ht/~mna/kick)
* [Builds](https://builds.sr.ht/~mna/kick)
-Kick streamlines configuration of a robust, hardened, production-ready
-Go web server. Its core is based on `net/http` and standard library
-packages, and it integrates proven, high-quality community Go packages
-for commonly-needed additional features.
-
-Through the use of the `Builders` type, it provides some flexibility
-and "pluggability" in the choice of third-party packages used to
-deliver those extra features, but it is not the goal of this package
-to be fully customizable - it is opinionated and as much as possible,
-provides an out-of-the-box encoding of best practices.
+Kick streamlines configuration of a robust, hardened, production-ready Go web
+server. Its core is based on `net/http` and standard library packages, and it
+integrates proven, high-quality community Go packages for commonly-needed
+additional features. It favors a data-driven, declarative approach to defining
+a web server and its routes.
+
+Through the use of the `Builders` type, it provides some flexibility and
+"pluggability" in the choice of third-party packages used to deliver those
+extra features, but it is not the goal of this package to be fully customizable
+- it is opinionated and as much as possible, provides an out-of-the-box
+encoding of best practices.
## Testing
@@ 50,23 51,13 @@ $ go test ./... -race
Kick automatically builds a robust, DOS-hardened web server based
on proven, established and widely used Go packages:
-* `github.com/gorilla/sessions` for sessions with `github.com/boj/redistore` (?) as backing store
-* `github.com/gorilla/websocket` for websocket
* `github.com/gorilla/handlers` for panic recovery, CORS, canonical host, content-type validation, method override, trust proxy headers
* `github.com/gorilla/csrf` for CSRF
-* `github.com/julienschmidt/httprouter` for route multiplexing and static file serving
-* `github.com/sirupsen/logrus` for structured logging
-* `github.com/gomodule/redigo` for Redis
-* `github.com/gorilla/schema` for decoding form values to structs, and `github.com/mna/httpparms` for streamlined API with validation
-* `github.com/sony/gobreaker` for the circuit breaker
+* `github.com/julienschmidt/httprouter` for route multiplexing
* `golang.org/x/crypto/acme/autocert` for production TLS certificate
* `github.com/FiloSottile/mkcert` for localhost/development TLS certificate
-* `github.com/throttled/throttled` for session-based rate-limiting
* `github.com/juju/ratelimit` for absolute endpoint rate-limiting
* `github.com/NYTimes/gziphandler` for gzip compression
-* `github.com/go-sql-driver/mysql` for mysql DB support
-* `github.com/jmoiron/sqlx` for added SQL and struct support
-* `github.com/kelseyhightower/envconfig` for configuration, overridable via flags
* `github.com/felixge/httpsnoop` for wrapping `http.ResponseWriter`
[mkcert]: https://github.com/FiloSottile/mkcert
@@ 1,16 0,0 @@
-# Tutorials
-
-1. Hello World, configured server with simple handler
-2. Flags, using reflection-based struct fields
-3. Params and validation (request struct)
-4. DB services, no ORM, sqlx is enough, with mocking, model struct
-5. Response structs, show support of various encodings
-6. Templates for HTML pages, show template build approach
-7. 3rd party services/api calls with circuit breaker (also microservices)
-8. Batch, async & one-off tools
-9. Redirect http to https
-10. Reverse proxy in front (e.g. distinct web + api)
-11. Structured logging
-12. Access path / router variables from handler
-13. Disable http/2 option (maybe to support websocket)
-14. Health checks, including DBs