stock-bot/apps/wcag-ada/config
2025-06-28 11:11:34 -04:00
..
config initial wcag-ada 2025-06-28 11:11:34 -04:00
src initial wcag-ada 2025-06-28 11:11:34 -04:00
package.json initial wcag-ada 2025-06-28 11:11:34 -04:00
README.md initial wcag-ada 2025-06-28 11:11:34 -04:00
tsconfig.json initial wcag-ada 2025-06-28 11:11:34 -04:00

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 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:

# 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:

// 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

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
}