package config import ( "os" "strconv" "strings" ) // Global configuration instance var global *Config // Config is the global configuration (loaded from .env) // Only contains truly global config, trading related config is at trader/strategy level type Config struct { // Service configuration APIServerPort int JWTSecret string RegistrationEnabled bool } // Init initializes global configuration (from .env) func Init() { cfg := &Config{ APIServerPort: 8080, RegistrationEnabled: true, } // Load from environment variables if v := os.Getenv("JWT_SECRET"); v != "" { cfg.JWTSecret = strings.TrimSpace(v) } if cfg.JWTSecret == "" { cfg.JWTSecret = "default-jwt-secret-change-in-production" } if v := os.Getenv("REGISTRATION_ENABLED"); v != "" { cfg.RegistrationEnabled = strings.ToLower(v) == "true" } if v := os.Getenv("API_SERVER_PORT"); v != "" { if port, err := strconv.Atoi(v); err == nil && port > 0 { cfg.APIServerPort = port } } global = cfg } // Get returns the global configuration func Get() *Config { if global == nil { Init() } return global }