feat: initial implementation of container management platform

This commit is contained in:
Tomas Dvorak
2026-02-16 10:18:05 +01:00
commit ffa5489dc1
167 changed files with 55910 additions and 0 deletions
+84
View File
@@ -0,0 +1,84 @@
package config
import (
"os"
"strconv"
)
type Config struct {
Environment string
Port string
DatabaseURL string
RedisURL string
JWTSecret string
CORS CORSConfig
Proxmox ProxmoxConfig
}
type CORSConfig struct {
AllowedOrigins []string
}
type ProxmoxConfig struct {
BaseURL string
Username string
Password string
TokenID string
Token string
}
func Load() *Config {
cfg := &Config{
Environment: getEnv("ENVIRONMENT", "development"),
Port: getEnv("PORT", "8080"),
DatabaseURL: getEnv("DATABASE_URL", "postgres://containr:password@localhost:5432/containr?sslmode=disable"),
RedisURL: getEnv("REDIS_URL", "redis://localhost:6379"),
JWTSecret: getEnv("JWT_SECRET", "your-secret-key-change-in-production"),
CORS: CORSConfig{
AllowedOrigins: []string{
"http://localhost:3000", // Vite dev server
"http://localhost:5173", // Alternative Vite port
},
},
Proxmox: ProxmoxConfig{
BaseURL: getEnv("PROXMOX_BASE_URL", ""),
Username: getEnv("PROXMOX_USERNAME", ""),
Password: getEnv("PROXMOX_PASSWORD", ""),
TokenID: getEnv("PROXMOX_TOKEN_ID", ""),
Token: getEnv("PROXMOX_TOKEN", ""),
},
}
// Add production origins if in production
if cfg.Environment == "production" {
cfg.CORS.AllowedOrigins = append(cfg.CORS.AllowedOrigins,
getEnv("FRONTEND_URL", "https://your-domain.com"))
}
return cfg
}
func getEnv(key, defaultValue string) string {
if value := os.Getenv(key); value != "" {
return value
}
return defaultValue
}
func getEnvAsBool(key string, defaultValue bool) bool {
if value := os.Getenv(key); value != "" {
if parsed, err := strconv.ParseBool(value); err == nil {
return parsed
}
}
return defaultValue
}
func getEnvAsInt(key string, defaultValue int) int {
if value := os.Getenv(key); value != "" {
if parsed, err := strconv.Atoi(value); err == nil {
return parsed
}
}
return defaultValue
}