package main import ( "log/slog" "net/http" "os" "menu/handlers" "github.com/joho/godotenv" ) var ( Version = "0.8.0" BuildTime = "-" ) func main() { setupDefaultLogger() err := godotenv.Load() if err != nil { slog.Warn("Cannot find .env file, using system env variables") } adminUser := os.Getenv("ADMIN_USER") adminPass := os.Getenv("ADMIN_PASS") if adminUser == "" { slog.Error("Missing ADMIN_USER env variable") os.Exit(1) } if adminPass == "" { slog.Error("Missing ADMIN_PASS env variable") os.Exit(1) } // Setup data directory dataDir, err := setupDataDir() if err != nil { slog.Error("Cannot set data directory", "dir", os.Getenv("DATA_DIR"), "error", err) os.Exit(1) } // Setup database connection dbConnection, err := NewDatabaseConnection(dataDir, "app.db") if err != nil { slog.Error("Databse error", "error", err) os.Exit(1) } db := database(dbConnection) defer db.Close() // Create App app := handlers.NewApp(db, handlers.NewBroker()) // Create server srv := NewServer(app, "0.0.0.0:7153", "*") // Start background cleanup service go handlers.StartDailyCleanup(app) slog.Info("Server started", "address", srv.Addr) if err := srv.ListenAndServe(); err != nil && err != http.ErrServerClosed { slog.Error("Cannot start server", "error", err) os.Exit(1) } }