Initial commit: Clean DSS implementation

Migrated from design-system-swarm with fresh git history.
Old project history preserved in /home/overbits/apps/design-system-swarm

Core components:
- MCP Server (Python FastAPI with mcp 1.23.1)
- Claude Plugin (agents, commands, skills, strategies, hooks, core)
- DSS Backend (dss-mvp1 - token translation, Figma sync)
- Admin UI (Node.js/React)
- Server (Node.js/Express)
- Storybook integration (dss-mvp1/.storybook)

Self-contained configuration:
- All paths relative or use DSS_BASE_PATH=/home/overbits/dss
- PYTHONPATH configured for dss-mvp1 and dss-claude-plugin
- .env file with all configuration
- Claude plugin uses ${CLAUDE_PLUGIN_ROOT} for portability

Migration completed: $(date)
🤖 Clean migration with full functionality preserved
This commit is contained in:
Digital Production Factory
2025-12-09 18:45:48 -03:00
commit 276ed71f31
884 changed files with 373737 additions and 0 deletions

127
tools/config.py Normal file
View File

@@ -0,0 +1,127 @@
"""
DSS Configuration Management
Secure configuration loading with:
- Environment variables (highest priority)
- .env files
- Default values
Never logs or exposes sensitive values.
"""
import os
from pathlib import Path
from typing import Optional
from dataclasses import dataclass
# Try to load dotenv if available
try:
from dotenv import load_dotenv
# Load from multiple possible locations (first found wins)
project_root = Path(__file__).parent.parent
env_locations = [
project_root / ".env", # Project root
project_root / "dss-mvp1" / ".env", # dss-mvp1 subdirectory
]
for env_path in env_locations:
if env_path.exists():
load_dotenv(env_path)
break
except ImportError:
pass
@dataclass
class FigmaConfig:
"""Figma API configuration."""
token: Optional[str] = None
cache_ttl: int = 300 # 5 minutes
@classmethod
def from_env(cls) -> "FigmaConfig":
return cls(
token=os.getenv("FIGMA_TOKEN"),
cache_ttl=int(os.getenv("FIGMA_CACHE_TTL", "300"))
)
@property
def is_configured(self) -> bool:
return bool(self.token)
@dataclass
class DatabaseConfig:
"""Database configuration."""
path: str = ".dss/dss.db"
@classmethod
def from_env(cls) -> "DatabaseConfig":
return cls(
path=os.getenv("DATABASE_PATH", ".dss/dss.db")
)
@dataclass
class ServerConfig:
"""Server configuration."""
port: int = 3456
host: str = "0.0.0.0"
env: str = "development"
log_level: str = "info"
@classmethod
def from_env(cls) -> "ServerConfig":
return cls(
port=int(os.getenv("PORT", "3456")),
host=os.getenv("HOST", "0.0.0.0"),
env=os.getenv("NODE_ENV", "development"),
log_level=os.getenv("LOG_LEVEL", "info")
)
@property
def is_production(self) -> bool:
return self.env == "production"
@dataclass
class Config:
"""Main configuration container."""
figma: FigmaConfig
database: DatabaseConfig
server: ServerConfig
@classmethod
def load(cls) -> "Config":
"""Load configuration from environment."""
return cls(
figma=FigmaConfig.from_env(),
database=DatabaseConfig.from_env(),
server=ServerConfig.from_env()
)
def summary(self) -> dict:
"""Return config summary (no secrets)."""
return {
"figma": {
"configured": self.figma.is_configured,
"cache_ttl": self.figma.cache_ttl
},
"database": {
"path": self.database.path
},
"server": {
"port": self.server.port,
"env": self.server.env,
"log_level": self.server.log_level
}
}
# Global config instance
config = Config.load()
if __name__ == "__main__":
import json
print("DSS Configuration:")
print(json.dumps(config.summary(), indent=2))