/// Application configuration from compile-time environment variables. /// /// ## Development (LAN - no auth required) /// Default values use LAN IPs for local development: /// ```bash /// flutter run -d chrome /// ``` /// /// ## Production (public URLs - auth required) /// Override with public URLs for production builds: /// ```bash /// flutter build web \ /// --dart-define=CORE_API_URL=https://api.schweitz.net \ /// --dart-define=TATLOCK_API_URL=https://tatlock.schweitz.net /// ``` class AppConfig { AppConfig._(); /// Core API base URL /// - LAN default: No auth required /// - Production: https://api.schweitz.net (requires OIDC) static const coreApiUrl = String.fromEnvironment( 'CORE_API_URL', defaultValue: 'http://192.168.86.149:8083', ); /// Tatlock API base URL /// - LAN default: No auth required /// - Production: https://tatlock.schweitz.net (requires OIDC) static const tatlockApiUrl = String.fromEnvironment( 'TATLOCK_API_URL', defaultValue: 'http://192.168.86.149:8000', ); /// Authentik OIDC discovery URL static const authDiscoveryUrl = String.fromEnvironment( 'AUTH_DISCOVERY_URL', defaultValue: 'https://auth.schweitz.net/application/o/tatlock-ui/.well-known/openid-configuration', ); /// Authentik client ID static const authClientId = String.fromEnvironment( 'AUTH_CLIENT_ID', defaultValue: 'tatlock-ui', ); /// Authentik redirect URI scheme static const authRedirectScheme = String.fromEnvironment( 'AUTH_REDIRECT_SCHEME', defaultValue: 'net.schweitz.tatlock', ); /// Whether running in debug mode static const isDebug = bool.fromEnvironment('DEBUG', defaultValue: false); /// Whether auth is required (false for LAN development) static bool get requiresAuth => coreApiUrl.contains('schweitz.net') || tatlockApiUrl.contains('schweitz.net'); /// Portainer URL for container management static const portainerUrl = String.fromEnvironment( 'PORTAINER_URL', defaultValue: 'http://192.168.86.149:9000', ); /// Netdata URL for system monitoring static const netdataUrl = String.fromEnvironment( 'NETDATA_URL', defaultValue: 'http://192.168.86.149:19999', ); }