# Dependencies - Timeline SVG Generator

This document lists all third-party libraries and tools used in the Timeline SVG Generator project.

## Runtime Dependencies

### Production Dependencies

#### PapaParse
- **Version**: 5.4.1
- **Source**: https://cdn.jsdelivr.net/npm/papaparse@5.4.1/papaparse.min.js
- **Purpose**: CSV parsing and processing
- **License**: MIT
- **Usage**: Loaded via CDN in index.html:6
- **Documentation**: https://www.papaparse.com/
- **Why chosen**: Robust CSV parser with header support, handles edge cases, small footprint

## Development Dependencies

### Testing Framework

#### Vitest
- **Version**: ^2.1.0
- **Purpose**: Modern test runner and framework
- **License**: MIT
- **Documentation**: https://vitest.dev/
- **Features**: Fast execution, ESM support, built-in coverage, watch mode

#### @vitest/ui
- **Version**: ^2.1.0
- **Purpose**: Browser-based test UI and visualization
- **License**: MIT
- **Usage**: `npm run test:ui`

#### @vitest/coverage-v8
- **Version**: ^2.1.0
- **Purpose**: Code coverage reporting using V8 engine
- **License**: MIT
- **Usage**: `npm run test:coverage`

#### jsdom
- **Version**: ^25.0.0
- **Purpose**: DOM environment simulation for Node.js testing
- **License**: MIT
- **Documentation**: https://github.com/jsdom/jsdom
- **Usage**: Enables testing of browser APIs and DOM manipulation

## System Requirements

### Node.js
- **Minimum Version**: 18.0.0
- **Recommended**: 20.0.0 or later
- **Purpose**: Development environment and package management

### NPM
- **Minimum Version**: 8.0.0
- **Purpose**: Package manager for development dependencies

## Browser Requirements (Production)

### Supported Browsers
- **Chrome**: 80+
- **Firefox**: 75+
- **Safari**: 13+
- **Edge**: 80+

### Required Browser Features
- ES6 Modules support
- Fetch API
- File API (for file uploads)
- SVG support
- CSS Grid and Flexbox

## External Services

### CDN Dependencies

#### jsDelivr
- **Purpose**: Content Delivery Network for PapaParse
- **URL**: https://cdn.jsdelivr.net/
- **Fallback**: None (project requires internet connection)
- **Alternative**: Could be replaced with local copy

## Font Dependencies

### Inter Font Family
- **Source**: System fonts (Inter, Arial, sans-serif fallback)
- **Usage**: Default UI typography in index.html:11
- **Purpose**: Modern, readable interface typography
- **Fallback**: Arial → sans-serif

## Development Tools (Optional)

### Recommended IDE Extensions
- **Vitest**: VS Code extension for integrated test running
- **JavaScript ES6**: Enhanced JavaScript support
- **Live Server**: Local development server

### Git
- **Purpose**: Version control
- **Required for**: Contributing to the project

## Security Considerations

### CDN Dependencies
- **Risk**: External dependency on jsDelivr
- **Mitigation**: Well-established CDN with high uptime
- **Alternative**: Local hosting of PapaParse possible

### No Backend Dependencies
- **Advantage**: Reduced attack surface
- **Note**: All processing happens client-side

## Dependency Management

### Installation
```bash
# Install all development dependencies
npm install

# Production use
# No installation needed - open index.html in browser
```

### Updates
```bash
# Check for outdated packages
npm outdated

# Update to latest compatible versions
npm update

# Update to latest major versions (breaking changes possible)
npm install package@latest
```

### Vulnerability Scanning
```bash
# Check for security vulnerabilities
npm audit

# Fix automatically fixable vulnerabilities
npm audit fix
```

## License Compatibility

All dependencies use MIT or MIT-compatible licenses:
- **PapaParse**: MIT License
- **Vitest**: MIT License
- **jsdom**: MIT License
- **@vitest/ui**: MIT License
- **@vitest/coverage-v8**: MIT License

## Dependency Decision Matrix

| Library | Alternatives Considered | Why Chosen |
|---------|------------------------|------------|
| PapaParse | CSV.js, custom parser | Mature, feature-rich, wide browser support |
| Vitest | Jest, Mocha | Modern, fast, ESM native, zero config |
| jsdom | happy-dom, playwright | Most mature DOM simulation, wide compatibility |

## Future Dependency Considerations

### Potential Additions
- **TypeScript**: For type safety (would require build step)
- **Playwright**: For E2E testing
- **ESLint**: For code quality
- **Prettier**: For code formatting

### Minimization Strategy
The project intentionally keeps dependencies minimal to:
- Reduce bundle size
- Minimize security surface
- Maintain browser compatibility
- Enable offline usage
- Simplify deployment

## Monitoring

### Dependency Health
- Monitor PapaParse for security updates
- Watch Vitest releases for test improvements
- Check browser compatibility quarterly

### Performance Impact
- PapaParse: ~45KB minified
- No runtime performance impact from dev dependencies
- Zero build step maintains fast development cycle