Skip to main content

Overview

InstanceConfig represents the root-level configuration for an Applad instance, typically stored in applad.yaml. This is the top level of the configuration hierarchy.

Class Definition

final class InstanceConfig {
  const InstanceConfig({
    required this.version,
    this.ai,
    this.observability,
    this.enabledFeatures = const [],
  });
  
  factory InstanceConfig.fromMap(Map<String, dynamic> map);
  Map<String, dynamic> toJson();
}

Properties

version
String
required
Configuration schema version (e.g., "1")
ai
AiConfig?
AI provider configuration for AI-powered features
observability
ObservabilityRef?
Logging and tracing configuration
enabledFeatures
List<String>
default:"[]"
List of enabled feature flags for the instance

AiConfig

Configuration for AI providers:
provider
String
required
AI provider name (e.g., "openai", "anthropic", "google")
model
String?
Specific model to use (e.g., "gpt-4", "claude-3-opus")
apiKeyRef
SecretRef?
Reference to API key secret (e.g., {{secrets.openai_key}})

ObservabilityRef

Observability and monitoring settings:
logLevel
String?
Logging level: "debug", "info", "warn", "error"
tracing
bool?
Enable distributed tracing

Usage

Basic Configuration

# applad.yaml
version: "1"
features:
  - auth
  - database
  - storage
  - functions
import 'package:applad_core/applad_core.dart';

final config = InstanceConfig.fromMap(yamlData);
print('Version: ${config.version}');
print('Features: ${config.enabledFeatures}');

With AI Configuration

version: "1"
ai:
  provider: openai
  model: gpt-4
  api_key: "{{secrets.openai_key}}"
features:
  - ai_assist
final config = InstanceConfig.fromMap(yamlData);

if (config.ai != null) {
  print('AI Provider: ${config.ai!.provider}');
  print('Model: ${config.ai!.model}');
  
  if (config.ai!.apiKeyRef != null) {
    print('API Key Secret: ${config.ai!.apiKeyRef!.key}');
  }
}

With Observability

version: "1"
observability:
  log_level: info
  tracing: true
final config = InstanceConfig.fromMap(yamlData);

if (config.observability != null) {
  print('Log Level: ${config.observability!.logLevel}');
  print('Tracing Enabled: ${config.observability!.tracing}');
}

Feature Flags

version: "1"
features:
  auth: true
  database: true
  storage: true
  functions: false
  realtime: true
final config = InstanceConfig.fromMap(yamlData);

// Check if feature is enabled
final hasAuth = config.enabledFeatures.contains('auth');
final hasFunctions = config.enabledFeatures.contains('functions');

print('Auth enabled: $hasAuth');
print('Functions enabled: $hasFunctions');

Converting to JSON

final config = InstanceConfig(
  version: '1',
  ai: AiConfig(
    provider: 'openai',
    model: 'gpt-4',
  ),
  observability: ObservabilityRef(
    logLevel: 'info',
    tracing: true,
  ),
  enabledFeatures: ['auth', 'database', 'storage'],
);

final json = config.toJson();
// {
//   'version': '1',
//   'ai': {'provider': 'openai', 'model': 'gpt-4', 'api_key': null},
//   'observability': {'log_level': 'info', 'tracing': true},
//   'features': ['auth', 'database', 'storage']
// }

Common Feature Flags

  • auth - Authentication and user management
  • database - Database access
  • storage - File storage
  • functions - Serverless functions
  • realtime - WebSocket real-time updates
  • messaging - Real-time messaging
  • workflows - Workflow automation
  • analytics - Analytics tracking
  • ai_assist - AI-powered features

Source Location

packages/applad_core/lib/src/config/instance_config.dart:6

Build docs developers (and LLMs) love