everything you need to create an atproto appview
at main 51 lines 1.1 kB view raw
1package main 2 3import ( 4 "context" 5 "net/http" 6 "os" 7 8 "tangled.org/oppi.li/atproto-starterkit/appview/config" 9 "tangled.org/oppi.li/atproto-starterkit/appview/server" 10 "tangled.org/oppi.li/atproto-starterkit/log" 11) 12 13func main() { 14 ctx := context.Background() 15 logger := log.New("appview") 16 ctx = log.IntoContext(ctx, logger) 17 18 c, err := config.LoadConfig(ctx) 19 if err != nil { 20 logger.Error("failed to load config", "error", err) 21 return 22 } 23 24 logger.Info("config loaded", 25 "dev", c.Core.Dev, 26 "host", c.Core.Host, 27 "listen_addr", c.Core.ListenAddr, 28 "db_path", c.Core.DbPath, 29 "redis_addr", c.Redis.Addr, 30 "plc_url", c.Plc.PLCURL, 31 "oauth_kid", c.OAuth.ClientKid, 32 ) 33 34 srv, err := server.Make(ctx, c) 35 if err != nil { 36 logger.Error("failed to start appview", "err", err) 37 os.Exit(-1) 38 } 39 40 defer func() { 41 if err := srv.Close(); err != nil { 42 logger.Error("failed to close server", "err", err) 43 } 44 }() 45 46 logger.Info("starting server", "address", c.Core.ListenAddr) 47 48 if err := http.ListenAndServe(c.Core.ListenAddr, srv.Router()); err != nil { 49 logger.Error("failed to start appview", "err", err) 50 } 51}