package web import ( "github.com/gofiber/fiber/v2" ) import "log/slog" type Config struct { Logger *slog.Logger Listen string } type Server struct { config *Config log *slog.Logger fiber *fiber.App } func New(config *Config) (*Server, error) { _config := config if config == nil { _config = &Config{} } if _config.Logger == nil { _config.Logger = slog.Default() } return &Server{ config: _config, log: _config.Logger, }, nil } func (s *Server) Run() error { s.fiber = fiber.New(fiber.Config{}) UseRoute(s.fiber) s.log.Info("Server started on :8080") err := s.fiber.Listen(":8080") if err != nil { s.log.Error("Failed to start server", slog.Any("error", err)) } s.log.Info("Server stopped") return nil } func (s *Server) Stop() { err := s.fiber.Shutdown() if err != nil { s.log.Error("Failed to shutdown server", slog.Any("error", err)) } }