// Package web provides the HTTP foundation for Einherjar services. // // The root package exposes [New] — a factory that returns a lifecycle-managed // chi server with the recommended middleware stack pre-applied (request ID, // panic recovery, request logging). Import the sub-packages directly for full // control over individual components. // // Sub-packages: // // - [code.nochebuena.dev/einherjar/web/server] — lifecycle-managed chi HTTP server // - [code.nochebuena.dev/einherjar/web/mw] — transport middleware: recover, CORS, request ID, request logger, rate limiting // - [code.nochebuena.dev/einherjar/web/httputil] — typed handler adapters and HTTP response helpers // - [code.nochebuena.dev/einherjar/web/health] — concurrent health check handler // // # Happy path // // logger := logz.New(logz.Config{JSON: true}) // lc := launcher.New(logger) // // srv := web.New(logger) // srv.Get("/health", health.NewHandler(logger, db, cache)) // // lc.Append(srv) // lc.BeforeStart(func() error { // // register routes // return nil // }) // // if err := lc.Run(); err != nil { // logger.Error("launcher failed", err) // os.Exit(1) // } package web