tududi/backend/.env.example
Chris 57a6e558f3
fix: use CALDAV_ENABLED for calendar feature flag (#1070)
* fix: add FF_ENABLE_CALDAV feature flag for CalDAV functionality

Introduces a new dedicated feature flag for CalDAV sync that checks
both FF_ENABLE_CALDAV and CALDAV_ENABLED environment variables. This
allows the CalDAV tab to appear in profile settings when users set
CALDAV_ENABLED=true as documented.

The existing FF_ENABLE_CALENDAR remains unchanged as it's for a
separate (hidden) calendar feature.

Changes:
- Added 'caldav' feature flag to backend service (checks FF_ENABLE_CALDAV
  or CALDAV_ENABLED)
- Updated frontend FeatureFlags interface to include 'caldav'
- Changed CalDAV tab to use 'caldav' feature flag instead of 'calendar'
- Added FF_ENABLE_CALDAV to .env.example, .env.test, Dockerfile, and CI

Fixes #1048

* fix: add caldav property to all FeatureFlags initializations

Fixes TypeScript errors where FeatureFlags objects were missing the
new caldav property in:
- frontend/utils/featureFlags.ts (defaultFlags and error return)
- frontend/components/Navbar.tsx
- frontend/components/Sidebar.tsx
- frontend/components/Sidebar/SidebarNav.tsx
2026-04-25 18:21:53 +03:00

109 lines
3.6 KiB
Text

NODE_ENV=development
HOST=0.0.0.0
PORT=3002
# Database file path (defaults to db/{NODE_ENV}.sqlite3)
# DB_FILE=db/development.sqlite3
FRONTEND_URL=http://localhost:8080
BACKEND_URL=http://localhost:3002
TUDUDI_USER_EMAIL=admin@example.com
TUDUDI_USER_PASSWORD=change-me-to-secure-password
TUDUDI_SESSION_SECRET=your-random-64-character-hex-string-here
ENABLE_EMAIL=false
EMAIL_SMTP_HOST=smtp.gmail.com
EMAIL_SMTP_PORT=587
EMAIL_SMTP_SECURE=false
EMAIL_SMTP_USERNAME=your-email@example.com
EMAIL_SMTP_PASSWORD=your-app-password
EMAIL_FROM_ADDRESS=noreply@example.com
EMAIL_FROM_NAME=Tududi
REGISTRATION_TOKEN_EXPIRY_HOURS=24
DISABLE_SCHEDULER=false
DISABLE_TELEGRAM=false
# Feature Flags
FF_ENABLE_BACKUPS=false
FF_ENABLE_CALDAV=false
FF_ENABLE_CALENDAR=false
FF_ENABLE_HABITS=false
FF_ENABLE_MCP=false
# Trust Proxy Configuration
# REQUIRED when running behind a reverse proxy (Nginx, Caddy, Traefik, etc.)
# This allows Express to correctly read client IPs from X-Forwarded-For headers
# Without this setting, you will see rate limiting errors like:
# "ValidationError: The 'X-Forwarded-For' header is set but the Express 'trust proxy' setting is false"
#
# IMPORTANT: For Docker, ensure this is set in your environment variables or docker-compose.yml
# NOT just in this .env file, as Docker may not mount .env files by default
#
# Supported values:
# true - Trust all proxies (recommended for most setups)
# false - Don't trust any proxies (default)
# 1 - Trust the first hop only
# loopback - Trust loopback addresses (127.0.0.1/::1)
# 172.16.0.0/12 - Trust a specific subnet
#
# For troubleshooting, see: docs/troubleshooting/migration-issues.md
TUDUDI_TRUST_PROXY=true
# Disable HSTS (HTTP Strict Transport Security) headers
# Set to 'true' for local development when running production builds on HTTP
# NEVER enable this in actual production deployments with HTTPS
# DISABLE_HSTS=false
# OIDC/SSO Configuration
# See docs/10-oidc-sso.md for detailed setup instructions
OIDC_ENABLED=false
# BASE_URL=https://your-domain.com # Required for OIDC callbacks
# Password Authentication
# Set to false to disable password login/registration (SSO-only mode)
# Default: true (password auth enabled)
PASSWORD_AUTH_ENABLED=true
# Single provider configuration
# OIDC_PROVIDER_NAME=PocketID
# OIDC_PROVIDER_SLUG=pocketid
# OIDC_ISSUER_URL=https://pocketid.app
# OIDC_CLIENT_ID=your-client-id
# OIDC_CLIENT_SECRET=your-client-secret
# OIDC_SCOPE=openid profile email
# OIDC_AUTO_PROVISION=true
# OIDC_ADMIN_EMAIL_DOMAINS=example.com,company.com
# For multiple providers, use numbered variables:
# OIDC_PROVIDER_1_NAME=Google
# OIDC_PROVIDER_1_SLUG=google
# OIDC_PROVIDER_1_ISSUER=https://accounts.google.com
# OIDC_PROVIDER_1_CLIENT_ID=xxx.apps.googleusercontent.com
# OIDC_PROVIDER_1_CLIENT_SECRET=xxx
# OIDC_PROVIDER_1_AUTO_PROVISION=true
# CalDAV Synchronization
# See docs/feature-plans/01-caldav-sync.md for detailed documentation
CALDAV_ENABLED=false
# Encryption key for storing remote calendar passwords
# If not set, falls back to TUDUDI_SESSION_SECRET
# ENCRYPTION_KEY=your-256-bit-encryption-key
# CalDAV defaults
# CALDAV_DEFAULT_SYNC_INTERVAL=15 # Minutes
# CALDAV_MAX_RECURRING_INSTANCES=365 # Number of future instances to expand
# CALDAV_CONFLICT_RESOLUTION=last_write_wins
# Performance settings
# CALDAV_RATE_LIMIT=60 # Requests per minute
# CALDAV_MAX_SYNC_TASKS=1000 # Max tasks per sync
# CALDAV_REQUEST_TIMEOUT=30000 # Milliseconds
# Debugging
# CALDAV_LOG_LEVEL=info
# CALDAV_LOG_REQUESTS=false