stock-bot/apps/wcag-ada/config/README.md
2025-06-28 11:11:34 -04:00

181 lines
No EOL
4.5 KiB
Markdown

# 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
```typescript
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
```typescript
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 duration
- `headless`: Run browser in headless mode
- `blockResources`: Block images/fonts for faster scans
- `viewport`: Default viewport dimensions
### Worker Configuration
- `concurrency`: Number of concurrent jobs
- `queueName`: BullMQ queue name
- `redis`: Redis connection settings
- `jobs`: Job-specific configurations
- `scheduler`: Scheduled job settings
### Features Configuration
- `screenshots`: Screenshot capture settings
- `customRules`: Custom accessibility rules
- `multiPage`: Multi-page scanning
- `reports`: Report generation features
- `integrations`: External service integrations
- `enterprise`: 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 providers
- `cdn`: CDN configuration
## Environment Variables
The system supports environment variable overrides with the `WCAG_` prefix:
```bash
# 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):
1. `config/default.json` - Base configuration
2. `config/{environment}.json` - Environment-specific (development, production, test)
3. Environment variables - Highest priority
## Service-Specific Configuration
Each service can have its own configuration:
```typescript
// 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
1. Add schema definition in `src/schemas/`
2. Update `wcag-app.schema.ts` to include new schema
3. Add default values in `config/default.json`
4. Add environment-specific overrides as needed
5. Create helper functions in `src/index.ts` for easy access
## Examples
### Check Subscription Limits
```typescript
import { getSubscriptionConfig } from '@wcag-ada/config';
const starterLimits = getSubscriptionConfig('starter');
console.log(starterLimits.websites); // 5
console.log(starterLimits.scansPerMonth); // 500
```
### Get Compliance Settings
```typescript
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
```typescript
import { getStorageConfig } from '@wcag-ada/config';
const storage = getStorageConfig();
if (storage.type === 's3') {
// Use S3 storage
} else {
// Use local storage
}
```