package main import ( "flag" "log" "os" "os/signal" "syscall" "github.com/justamessenger/server/internal/api" "github.com/justamessenger/server/internal/config" "github.com/justamessenger/server/internal/server" ) func main() { configPath := flag.String("config", "config.json", "path to config file") flag.Parse() cfg, err := config.Load(*configPath) if err != nil { log.Fatalf("Failed to load config: %v", err) } srv, err := server.New(cfg) if err != nil { log.Fatalf("Failed to create server: %v", err) } srv.Start() apiServer := api.New(srv, cfg) go func() { sigCh := make(chan os.Signal, 1) signal.Notify(sigCh, syscall.SIGINT, syscall.SIGTERM) <-sigCh log.Println("Shutting down...") srv.Stop() os.Exit(0) }() if err := apiServer.Start(cfg.ListenAddr); err != nil { log.Fatalf("API server failed: %v", err) } }