# ====================================================== # SERVER CONFIGURATION # ====================================================== # Port for the sync server to listen on PORT=3002 # ====================================================== # REDMINE CONFIGURATION # ====================================================== # Base URL of your Redmine instance (no trailing slash) REDMINE_API_URL=https://redmine.example.com # Redmine API key (found in My Account → API access key) REDMINE_API_KEY=your_redmine_api_key_here # Request timeout in milliseconds REDMINE_TIMEOUT=30000 # ====================================================== # GITEA CONFIGURATION # ====================================================== # Base URL of your Gitea instance (no trailing slash) GITEA_API_URL=https://gitea.example.com # Gitea personal access token (Settings → Applications → Generate New Token) # Required scopes: repo, write:issue, write:repository GITEA_TOKEN=your_gitea_token_here # Gitea username or organization that owns the repositories GITEA_OWNER=your_username # Request timeout in milliseconds GITEA_TIMEOUT=30000 # ====================================================== # CACHE CONFIGURATION # ====================================================== # Cache time-to-live in milliseconds (default: 30000 = 30 seconds) # This prevents sync loops. Increase if experiencing issues. CACHE_TTL=30000 # ====================================================== # SYNC FEATURE FLAGS # ====================================================== # Enable/disable label synchronization # Labels are created from Redmine trackers, priorities, and categories SYNC_LABELS=true # Enable/disable milestone synchronization # Redmine versions are synced as Gitea milestones SYNC_MILESTONES=true # Enable/disable attachment synchronization (future feature) SYNC_ATTACHMENTS=false # Enable/disable custom field inclusion in descriptions # Redmine custom fields will be appended to Gitea issue descriptions SYNC_CUSTOM_FIELDS=true # ====================================================== # RETRY CONFIGURATION # ====================================================== # Number of retry attempts for failed API requests RETRY_ATTEMPTS=3 # Initial retry delay in milliseconds (uses exponential backoff) RETRY_DELAY=1000 # ====================================================== # LOGGING CONFIGURATION # ====================================================== # Log level: debug, info, warn, error LOG_LEVEL=info # Enable verbose logging (includes stack traces) LOG_VERBOSE=false # ====================================================== # PROJECT MAPPING # ====================================================== # JSON object mapping Gitea repository names to Redmine project identifiers # Format: {"GiteaRepoName":"redmine-project-id","AnotherRepo":"another-project"} # # Example: # PROJECT_MAPPING={"AI_Smuggling":"ai-smuggling","WebApp":"web-application"} # # If not specified, automatic conversion is used: # - Underscores → hyphens # - Uppercase → lowercase # - Special characters removed PROJECT_MAPPING={}