diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..3178593 --- /dev/null +++ b/.env.example @@ -0,0 +1,275 @@ +# UnitForge Environment Configuration +# Copy this file to .env and modify the values as needed + +# ============================================================================= +# APPLICATION INFORMATION +# ============================================================================= + +APP_NAME=UnitForge +APP_VERSION=1.0.0 +APP_DESCRIPTION="Create, validate, and manage systemd unit files" + +# ============================================================================= +# EXTERNAL LINKS +# ============================================================================= + +GITHUB_URL=https://github.com/will666/unitforge +DOCUMENTATION_URL=https://unitforge.readthedocs.io/ +BUG_REPORTS_URL=https://github.com/will666/unitforge/issues + +# ============================================================================= +# CONTACT INFORMATION +# ============================================================================= + +CONTACT_EMAIL=contact@unitforge.dev + +# ============================================================================= +# APPLICATION SETTINGS +# ============================================================================= + +DEBUG=false +ENVIRONMENT=production +LOG_LEVEL=info + +# ============================================================================= +# SERVER CONFIGURATION +# ============================================================================= + +HOST=0.0.0.0 +PORT=8000 +RELOAD=false +WORKERS=4 + +# ============================================================================= +# API CONFIGURATION +# ============================================================================= + +API_TITLE="${APP_NAME}" +API_VERSION="${APP_VERSION}" +API_DESCRIPTION=${APP_DESCRIPTION} +DOCS_URL="/api/docs" +REDOC_URL="/api/redoc" + +# ============================================================================= +# SECURITY SETTINGS +# ============================================================================= + +# IMPORTANT: Generate a secure secret key for production +SECRET_KEY=your-secret-key-here +ALLOWED_HOSTS=["*"] + +# ============================================================================= +# CORS CONFIGURATION +# ============================================================================= + +# Use "*" for all origins or comma-separated list of allowed origins +# Examples: +# CORS_ORIGINS=* +# CORS_ORIGINS=["https://yourdomain.com", "https://www.yourdomain.com"] +CORS_ORIGINS=* + +# ============================================================================= +# DATABASE (Future Use) +# ============================================================================= + +# DATABASE_URL="sqlite:///./unitforge.db" + +# ============================================================================= +# FILE UPLOAD SETTINGS +# ============================================================================= + +# Maximum file upload size in bytes (1MB) +MAX_UPLOAD_SIZE=1048576 +ALLOWED_EXTENSIONS=[".service", ".timer", ".socket", ".mount", ".target", ".path"] + +# ============================================================================= +# TEMPLATE SETTINGS +# ============================================================================= + +# Template cache time-to-live in seconds (5 minutes) +TEMPLATE_CACHE_TTL=300 +# Validation cache time-to-live in seconds (1 minute) +VALIDATION_CACHE_TTL=60 + +# ============================================================================= +# DEVELOPMENT TOOLS (Override for Development) +# ============================================================================= + +# Test options (development only) +# PYTEST_ADDOPTS="-v --tb=short --strict-markers" +# COVERAGE_REPORT_DIR="htmlcov" +# MYPY_CONFIG_FILE="pyproject.toml" + +# ============================================================================= +# UV PACKAGE MANAGER SETTINGS +# ============================================================================= + +# UV package manager cache directory +# UV_CACHE_DIR=".uv-cache" +# UV_PYTHON="python3" + +# ============================================================================= +# DOCKER SETTINGS +# ============================================================================= + +# Docker build settings +# DOCKER_BUILDKIT=1 +# COMPOSE_DOCKER_CLI_BUILD=1 + +# ============================================================================= +# PATHS +# ============================================================================= + +FRONTEND_DIR="frontend" +BACKEND_DIR="backend" +STATIC_DIR="frontend/static" +TEMPLATES_DIR="frontend/templates" + +# ============================================================================= +# FEATURE FLAGS +# ============================================================================= + +ENABLE_API_METRICS=false +ENABLE_REQUEST_LOGGING=true +ENABLE_TEMPLATE_CACHING=true +ENABLE_VALIDATION_CACHING=true + +# ============================================================================= +# PERFORMANCE SETTINGS +# ============================================================================= + +REQUEST_TIMEOUT=30 +KEEPALIVE_TIMEOUT=5 +MAX_CONNECTIONS=100 + +# ============================================================================= +# LOGGING CONFIGURATION +# ============================================================================= + +LOG_FORMAT="%(asctime)s - %(name)s - %(levelname)s - %(message)s" +LOG_DATE_FORMAT="%Y-%m-%d %H:%M:%S" +ACCESS_LOG=true + +# ============================================================================= +# DEVELOPMENT SERVER OPTIONS (Development Only) +# ============================================================================= + +# Development server auto-reload settings +# AUTO_RELOAD=false +# RELOAD_DIRS=["backend", "frontend"] +# RELOAD_DELAY=0.25 + +# ============================================================================= +# TESTING CONFIGURATION +# ============================================================================= + +# Testing configuration +# TEST_DATABASE_URL="sqlite:///:memory:" +# TEST_PARALLEL=true +# TEST_COVERAGE_THRESHOLD=80 + +# ============================================================================= +# CLI CONFIGURATION +# ============================================================================= + +CLI_VERBOSE=false +CLI_COLOR=true +CLI_PROGRESS=true + +# ============================================================================= +# VALIDATION SETTINGS +# ============================================================================= + +STRICT_VALIDATION=false +SHOW_WARNINGS=true +MAX_VALIDATION_ERRORS=50 + +# ============================================================================= +# TEMPLATE GENERATION DEFAULTS +# ============================================================================= + +DEFAULT_USER="www-data" +DEFAULT_GROUP="www-data" +DEFAULT_RESTART_POLICY="on-failure" +DEFAULT_WANTED_BY="multi-user.target" + +# ============================================================================= +# SECURITY HEADERS +# ============================================================================= + +SECURITY_HEADERS=true +# HSTS max age in seconds (1 year) +HSTS_MAX_AGE=31536000 +CSP_ENABLED=true + +# ============================================================================= +# MONITORING +# ============================================================================= + +HEALTH_CHECK_ENABLED=true +METRICS_ENABLED=false +TRACING_ENABLED=false + +# ============================================================================= +# ASSET OPTIMIZATION +# ============================================================================= + +HOT_RELOAD=false +SOURCE_MAPS=false +MINIFY_ASSETS=true +COMPRESS_RESPONSES=true + +# ============================================================================= +# DEVELOPMENT TOOLS (Development Only) +# ============================================================================= + +# Development editor and browser +# EDITOR="code" +# BROWSER="firefox" + +# ============================================================================= +# GIT HOOKS (Development Only) +# ============================================================================= + +# Git hooks configuration +# PRE_COMMIT_ENABLED=true +# AUTO_FORMAT=true +# AUTO_LINT=true + +# ============================================================================= +# DOCUMENTATION +# ============================================================================= + +DOCS_AUTO_RELOAD=false +API_DOCS_ENABLED=true +SWAGGER_UI_ENABLED=true +REDOC_ENABLED=true + +# ============================================================================= +# DEVELOPMENT OVERRIDES +# ============================================================================= +# Uncomment the following lines for development: + +# DEBUG=true +# ENVIRONMENT=development +# LOG_LEVEL=debug +# HOST=127.0.0.1 +# RELOAD=true +# WORKERS=1 +# API_TITLE="${APP_NAME} Development" +# API_VERSION="${APP_VERSION}-dev" +# SECRET_KEY="dev-secret-key-change-in-production" +# ALLOWED_HOSTS=["localhost", "127.0.0.1", "0.0.0.0", "::1"] +# CORS_ORIGINS=["http://localhost:3000", "http://localhost:8000", "http://127.0.0.1:8000"] +# ENABLE_API_METRICS=true +# AUTO_RELOAD=true +# RELOAD_DIRS=["backend", "frontend"] +# RELOAD_DELAY=0.25 +# HOT_RELOAD=true +# SOURCE_MAPS=true +# MINIFY_ASSETS=false +# COMPRESS_RESPONSES=false +# SECURITY_HEADERS=false +# HSTS_MAX_AGE=0 +# CSP_ENABLED=false +# DOCS_AUTO_RELOAD=true