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.
shlf.space
1package main
2
3import (
4 "context"
5 "log"
6 "log/slog"
7 "net/http"
8 "os"
9
10 "shlf.space/internal/config"
11 "shlf.space/internal/server"
12)
13
14func main() {
15 ctx := context.Background()
16
17 config, err := config.LoadConfig(ctx)
18 if err != nil {
19 slog.Error("failed to load config", "err", err)
20 }
21
22 state, err := server.Make(ctx, config)
23 defer func() {
24 if err := state.Close(); err != nil {
25 slog.Error("failed to close state", "err", err)
26 }
27 }()
28 if err != nil {
29 log.Fatalf("failed to start server: %v", err)
30 os.Exit(-1)
31 }
32
33 slog.Info("Starting server", "addr", config.Core.ListenAddr)
34
35 err = http.ListenAndServe(config.Core.ListenAddr, state.Router())
36 if err != nil {
37 slog.Error("failed to start server", "err", err)
38 }
39
40 slog.Info("Shutdown complete.")
41}