package config import ( "encoding/json" "fmt" "os" ) // Config is the application configuration loaded from JSON. type Config struct { Host string `json:"host"` Port int `json:"port"` } // Default returns sensible defaults when no config file is used. func Default() *Config { return &Config{ Host: "127.0.0.1", Port: 8080, } } // Load reads and parses a JSON config file from path. func Load(path string) (*Config, error) { data, err := os.ReadFile(path) if err != nil { return nil, fmt.Errorf("read config: %w", err) } cfg := Default() if err := json.Unmarshal(data, cfg); err != nil { return nil, fmt.Errorf("parse config: %w", err) } return cfg, nil }