# System Patterns ## Architecture Overview ### Frontend Architecture 1. React Component Structure - Layout components for consistent structure - Shared components for reusability - Page-specific components for unique features - Context providers for state management 2. Routing System - React Router v7 for navigation - Client-side routing - Protected routes where necessary 3. State Management - React Context for global state - Local state for component-specific data - Notification context for toast messages ### Backend Architecture 1. API Structure - Express.js server - RESTful endpoints - Rate-limited routes - Email service integration 2. Caching Layer - Redis-backed caching - Session management - Rate limiting implementation ## Key Technical Decisions ### Development Environment 1. Build System - Vite for fast development - Hot Module Replacement - TypeScript compilation - Concurrent frontend/backend development 2. Docker Configuration - Multi-container setup - Development and production configurations - Volume mounting for persistent data - Bridge network setup ### Production Setup 1. Deployment Strategy - Multi-stage Docker builds - Nginx for static file serving - Node.js API server - Automatic container restart 2. Performance Optimizations - Tree shaking - Code splitting - Redis caching - Static file optimization ### Security Patterns 1. API Security - Rate limiting - CORS configuration - Environment variable protection - Secure email handling 2. Data Protection - Form validation - Input sanitization - Redis session management - Secure credential storage ## Directory Structure ``` src/ ├── api/ # Backend API routes ├── components/ # UI components │ ├── Layout/ # Layout structure │ └── shared/ # Reusable components ├── context/ # React Context ├── lib/ # Utility functions ├── pages/ # Route pages └── assets/ # Static assets public/ ├── images/ # Image assets ├── subtitles/ # WebVTT files ├── transcriptions/# Text files └── videos/ # Video content ``` ## Implementation Patterns ### Component Patterns - Functional components with hooks - TypeScript interfaces for props - Separation of concerns - Reusable styling with Tailwind ### Animation Patterns - Framer Motion for complex animations - CSS transitions for simple effects - Intersection Observer for scroll animations - Performance-optimized animations ### Accessibility Patterns - ARIA labels - Semantic HTML - Keyboard navigation - Screen reader support - Color contrast compliance ### Testing Strategy - Component testing - API endpoint testing - Integration testing - Accessibility testing