- Fixed gitignore to allow Screenshots/*.png files - Added all screenshots for README documentation - Fixed gitignore to be less restrictive with image files - Includes dashboard, agent, updates, and docker screenshots
52 lines
1.3 KiB
Go
52 lines
1.3 KiB
Go
package config
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
"strconv"
|
|
|
|
"github.com/joho/godotenv"
|
|
)
|
|
|
|
// Config holds the application configuration
|
|
type Config struct {
|
|
ServerPort string
|
|
DatabaseURL string
|
|
JWTSecret string
|
|
CheckInInterval int
|
|
OfflineThreshold int
|
|
Timezone string
|
|
}
|
|
|
|
// Load reads configuration from environment variables
|
|
func Load() (*Config, error) {
|
|
// Load .env file if it exists (for development)
|
|
_ = godotenv.Load()
|
|
|
|
checkInInterval, _ := strconv.Atoi(getEnv("CHECK_IN_INTERVAL", "300"))
|
|
offlineThreshold, _ := strconv.Atoi(getEnv("OFFLINE_THRESHOLD", "600"))
|
|
|
|
cfg := &Config{
|
|
ServerPort: getEnv("SERVER_PORT", "8080"),
|
|
DatabaseURL: getEnv("DATABASE_URL", "postgres://aggregator:aggregator@localhost:5432/aggregator?sslmode=disable"),
|
|
JWTSecret: getEnv("JWT_SECRET", "test-secret-for-development-only"),
|
|
CheckInInterval: checkInInterval,
|
|
OfflineThreshold: offlineThreshold,
|
|
Timezone: getEnv("TIMEZONE", "UTC"),
|
|
}
|
|
|
|
// Debug: Log what JWT secret we're using (remove in production)
|
|
if cfg.JWTSecret == "test-secret-for-development-only" {
|
|
fmt.Printf("🔓 Using development JWT secret\n")
|
|
}
|
|
|
|
return cfg, nil
|
|
}
|
|
|
|
func getEnv(key, defaultValue string) string {
|
|
if value := os.Getenv(key); value != "" {
|
|
return value
|
|
}
|
|
return defaultValue
|
|
}
|