package main import ( "backend/database" "backend/routes" "backend/utils" "fmt" "github.com/getsentry/sentry-go" "github.com/go-chi/chi/v5" "github.com/go-chi/chi/v5/middleware" "github.com/joho/godotenv" "log" "net/http" "os" "time" ) var router chi.Router func init() { err := godotenv.Load(".env", ".private.env", ".db.env", ".email.env") if err != nil { log.Fatal("Error loading .env file") } log.Println(".env files loaded") log.Println(fmt.Sprintf("Initizalized CDN path at %v", os.Getenv("CDN_PATH"))) log.Println(fmt.Sprintf("Initizalized CDN URL at %v", os.Getenv("CDN_URL"))) err = sentry.Init(sentry.ClientOptions{ Dsn: os.Getenv("SENTRY_DSN"), }) if err != nil { fmt.Printf("Sentry initialization failed: %v\n", err) } router = chi.NewRouter() router.Use(middleware.RequestID) router.Use(middleware.RealIP) router.Use(middleware.Logger) router.Use(middleware.Recoverer) router.Route("/v1", routes.RegisterRouters) database.ConnectToDB() } func main() { server := http.Server{ Addr: fmt.Sprintf("%v:%v", os.Getenv("ADDRESS"), os.Getenv("PORT")), Handler: router, IdleTimeout: 120 * time.Second, ReadTimeout: 30 * time.Second, WriteTimeout: 30 * time.Second, } log.Println(fmt.Sprintf("Staring on %v:%v", os.Getenv("ADDRESS"), utils.Getenv("PORT", "8080"))) err := server.ListenAndServe() if err != nil { log.Println(err) sentry.CaptureException(err) } }