Discover books, shows, and movies at your level. Track your progress by filling your Shelf with what you find, and share with other language learners. *No dusting required.
at master 35 lines 668 B view raw
1package main 2 3import ( 4 "context" 5 "log/slog" 6 "net/http" 7 8 "shelf.app/internal/config" 9 "shelf.app/internal/server" 10) 11 12func main() { 13 ctx := context.Background() 14 15 config, err := config.LoadConfig(ctx) 16 if err != nil { 17 slog.Error("failed to load config", "err", err) 18 } 19 20 state, err := server.Make(ctx, config) 21 defer func() { 22 if err := state.Close(); err != nil { 23 slog.Error("failed to close state", "err", err) 24 } 25 }() 26 27 slog.Info("Starting server", "addr", config.Core.ListenAddr) 28 29 err = http.ListenAndServe(config.Core.ListenAddr, state.Router()) 30 if err != nil { 31 slog.Error("failed to start server", "err", err) 32 } 33 34 slog.Info("Shutdown complete.") 35}