package config import ( "encoding/hex" "fmt" "os" ) type Config struct { DatabaseURL string JWTSecret string EncryptionKey []byte Port string ScraperURL string AdminEmail string AdminPassword string } func Load() (*Config, error) { dbURL := os.Getenv("DATABASE_URL") if dbURL == "" { return nil, fmt.Errorf("DATABASE_URL is required") } jwtSecret := os.Getenv("JWT_SECRET") if jwtSecret == "" { return nil, fmt.Errorf("JWT_SECRET is required") } encHex := os.Getenv("ENCRYPTION_KEY") if encHex == "" { return nil, fmt.Errorf("ENCRYPTION_KEY is required") } encKey, err := hex.DecodeString(encHex) if err != nil || len(encKey) != 32 { return nil, fmt.Errorf("ENCRYPTION_KEY must be a valid 32-byte hex string") } port := os.Getenv("PORT") if port == "" { port = "8080" } scraperURL := os.Getenv("SCRAPER_URL") if scraperURL == "" { scraperURL = "http://scraper:3001" } return &Config{ DatabaseURL: dbURL, JWTSecret: jwtSecret, EncryptionKey: encKey, Port: port, ScraperURL: scraperURL, AdminEmail: os.Getenv("ADMIN_EMAIL"), AdminPassword: os.Getenv("ADMIN_PASSWORD"), }, nil }