forked from
brookjeynes.dev/shelf
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.
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}