package config import ( "os" "path/filepath" "strings" ) type Config struct { Port string DataDir string DatabasePath string JWTSecret string BaseURL string AllowRegistration bool LogLevel string } func Load() *Config { port := getEnv("PORT", "8080") dataDir := getEnv("DATA_DIR", "./data") dbURL := getEnv("DATABASE_URL", "") dbPath := filepath.Join(dataDir, "mindsift.db") if strings.HasPrefix(dbURL, "sqlite://") { dbPath = strings.TrimPrefix(dbURL, "sqlite://") } else if dbURL != "" && !strings.HasPrefix(dbURL, "postgres") { dbPath = dbURL } jwtSecret := getEnv("JWT_SECRET", "mindsift-default-selfhosted-jwt-secret-key-2026") baseURL := getEnv("BASE_URL", "http://localhost:"+port) allowReg := strings.ToLower(getEnv("ALLOW_REGISTRATION", "true")) != "false" logLevel := getEnv("LOG_LEVEL", "info") return &Config{ Port: port, DataDir: dataDir, DatabasePath: dbPath, JWTSecret: jwtSecret, BaseURL: baseURL, AllowRegistration: allowReg, LogLevel: logLevel, } } func getEnv(key, fallback string) string { if val, ok := os.LookupEnv(key); ok && strings.TrimSpace(val) != "" { return strings.TrimSpace(val) } return fallback }