| .. | ||
| config | ||
| src | ||
| package.json | ||
| README.md | ||
| tsconfig.json | ||
WCAG-ADA Configuration
Centralized configuration management for the WCAG-ADA compliance platform, built on top of the core configuration system.
Overview
This configuration system provides:
- Type-safe configuration with Zod schemas
- Multi-source configuration (JSON files + environment variables)
- Environment-specific overrides
- Service-specific configurations
- Feature flags management
Usage
Basic Usage
import { initializeWcagConfig, getWcagConfig } from '@wcag-ada/config';
// Initialize configuration (do this once at app startup)
const config = initializeWcagConfig('api'); // 'api' | 'dashboard' | 'worker'
// Access configuration values
console.log(config.services.api.port); // 3001
console.log(config.scanner.concurrency); // 2
Helper Functions
import {
getScannerConfig,
getWorkerConfig,
isFeatureEnabled,
getServiceConfig
} from '@wcag-ada/config';
// Get specific configurations
const scannerConfig = getScannerConfig();
const workerConfig = getWorkerConfig();
// Check feature flags
if (isFeatureEnabled('screenshots')) {
// Screenshot feature is enabled
}
if (isFeatureEnabled('reports.pdf')) {
// PDF reports are enabled
}
// Get service configuration
const apiConfig = getServiceConfig('api');
Configuration Structure
Scanner Configuration
concurrency: Number of concurrent scans (1-10)timeout: Maximum scan durationheadless: Run browser in headless modeblockResources: Block images/fonts for faster scansviewport: Default viewport dimensions
Worker Configuration
concurrency: Number of concurrent jobsqueueName: BullMQ queue nameredis: Redis connection settingsjobs: Job-specific configurationsscheduler: Scheduled job settings
Features Configuration
screenshots: Screenshot capture settingscustomRules: Custom accessibility rulesmultiPage: Multi-page scanningreports: Report generation featuresintegrations: External service integrationsenterprise: Enterprise features (SSO, white-label)
Providers Configuration
storage: File storage (local, S3, GCS, Azure)email: Email providers (SMTP, SendGrid, SES)auth: Authentication settings (JWT, OAuth)analytics: Analytics providerscdn: CDN configuration
Environment Variables
The system supports environment variable overrides with the WCAG_ prefix:
# Scanner settings
WCAG_SCANNER_CONCURRENCY=5
WCAG_SCANNER_TIMEOUT=180000
WCAG_SCANNER_HEADLESS=true
# Worker settings
WCAG_WORKER_CONCURRENCY=3
WCAG_WORKER_REDIS_HOST=redis.example.com
WCAG_WORKER_REDIS_PORT=6379
# Service ports
WCAG_SERVICES_API_PORT=3001
WCAG_SERVICES_DASHBOARD_PORT=3000
# Storage
WCAG_PROVIDERS_STORAGE_TYPE=s3
WCAG_PROVIDERS_STORAGE_S3_BUCKET=wcag-ada-storage
WCAG_PROVIDERS_STORAGE_S3_REGION=us-east-1
# Authentication
WCAG_PROVIDERS_AUTH_JWT_SECRET=your-secret-key
Configuration Files
Configuration files are loaded in this order (later files override earlier ones):
config/default.json- Base configurationconfig/{environment}.json- Environment-specific (development, production, test)- Environment variables - Highest priority
Service-Specific Configuration
Each service can have its own configuration:
// API Service
initializeWcagConfig('api');
// Uses services.api configuration
// Dashboard
initializeWcagConfig('dashboard');
// Uses services.dashboard configuration
// Worker
initializeWcagConfig('worker');
// Uses services.worker configuration
Adding New Configuration
- Add schema definition in
src/schemas/ - Update
wcag-app.schema.tsto include new schema - Add default values in
config/default.json - Add environment-specific overrides as needed
- Create helper functions in
src/index.tsfor easy access
Examples
Check Subscription Limits
import { getSubscriptionConfig } from '@wcag-ada/config';
const starterLimits = getSubscriptionConfig('starter');
console.log(starterLimits.websites); // 5
console.log(starterLimits.scansPerMonth); // 500
Get Compliance Settings
import { getComplianceConfig } from '@wcag-ada/config';
const compliance = getComplianceConfig();
console.log(compliance.defaultLevel); // { standard: 'WCAG21', level: 'AA' }
console.log(compliance.criticalCriteria); // ['1.1.1', '1.3.1', ...]
Storage Configuration
import { getStorageConfig } from '@wcag-ada/config';
const storage = getStorageConfig();
if (storage.type === 's3') {
// Use S3 storage
} else {
// Use local storage
}