181 lines
No EOL
4.5 KiB
Markdown
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
|
|
}
|
|
``` |