# Frontend Architecture Documentation Last Updated: 2024-02-21 ## Core Technologies ### 1. HTMX - Used for dynamic updates and server interactions - Enables partial page updates without full reloads - Integrated with Django backend for seamless data exchange - Used for form submissions and dynamic content loading ### 2. AlpineJS - Handles client-side interactivity and state management - Used for dropdowns, modals, and other interactive components - Provides reactive data binding and event handling - Key features used: - x-data for component state - x-show/x-if for conditional rendering - x-model for two-way data binding - x-on for event handling ### 3. Tailwind CSS - Utility-first CSS framework for styling - Custom configuration in tailwind.config.js - Responsive design utilities - Dark mode support with class-based implementation - Custom color scheme with primary/secondary colors ## Styling System ### 1. Base Styles - Font: Poppins (400, 500, 600, 700 weights) - Color Scheme: - Primary: Indigo (#4F46E5) - Secondary: Rose (#E11D48) - Gradients for interactive elements - Dark mode compatible color palette ### 2. Component Classes - Button Variants: - .btn-primary: Gradient background with hover effects - .btn-secondary: Light/dark mode aware styling - Social login buttons with brand colors - Form Elements: - .form-input: Styled input fields - .form-label: Consistent label styling - .form-error: Error message styling - Cards: - .card: Base card styling with shadows - .auth-card: Special styling for authentication forms - Status Badges: - .status-operating: Green success state - .status-closed: Red error state - .status-construction: Yellow warning state ### 3. Layout Components - Responsive container system - Grid system using Tailwind's grid utilities - Flexbox-based navigation and content layouts - Mobile-first responsive design ## Interactive Components ### 1. Navigation - Responsive header with mobile menu - User dropdown menu with authentication states - Theme toggle (light/dark mode) - Mobile-optimized navigation drawer ### 2. Forms - Location autocomplete system - Form validation with error states - CSRF protection integration - File upload handling ### 3. Alerts System - Timed auto-dismissing alerts - Slide animations for entry/exit - Context-aware styling (success, error, info, warning) - Accessible notifications ### 4. Modal System - HTMX-powered dynamic content loading - Alpine.js state management - Backdrop blur effects - Keyboard navigation support ## JavaScript Architecture ### 1. Core Functionality - Theme management with local storage persistence - HTMX configuration and setup - Alpine.js component initialization - Event delegation and handling ### 2. Location Autocomplete - Progressive enhancement for location fields - Country/Region/City hierarchical selection - Dynamic filtering based on parent selections - AJAX-powered suggestions ### 3. Form Handling - Client-side validation - File upload preview - Dynamic form updates - Error state management ## Performance Optimizations ### 1. Asset Loading - Deferred script loading - Preloaded critical assets - Minified production assets - Cached static resources ### 2. Rendering - Progressive enhancement - Partial page updates - Lazy loading of images - Optimized animation performance ### 3. State Management - Efficient DOM updates - Debounced search inputs - Throttled scroll handlers - Memory leak prevention ## Accessibility Features ### 1. Semantic HTML - Proper heading hierarchy - ARIA labels and roles - Semantic landmark regions - Meaningful alt text ### 2. Keyboard Navigation - Focus management - Skip links - Keyboard shortcuts - Focus trapping in modals ### 3. Screen Readers - ARIA live regions for alerts - Status role for notifications - Description text for icons - Form label associations ## Development Workflow ### 1. CSS Organization - Utility-first approach - Component-specific styles - Shared design tokens - Dark mode variants ### 2. JavaScript Patterns - Event delegation - Component encapsulation - State management - Error handling ### 3. Testing Considerations - Browser compatibility - Responsive design testing - Accessibility testing - Performance monitoring ## Browser Support ### 1. Supported Browsers - Chrome (latest 2 versions) - Firefox (latest 2 versions) - Safari (latest 2 versions) - Edge (latest version) ### 2. Fallbacks - Graceful degradation - No-script support - Legacy browser handling - Progressive enhancement ## Security Measures ### 1. CSRF Protection - Token validation - Secure form submission - Protected AJAX requests - Session handling ### 2. XSS Prevention - Content sanitization - Escaped output - Secure cookie handling - Input validation ## Future Considerations ### 1. Potential Improvements - Component library development - Enhanced type checking - Performance monitoring - Automated testing ### 2. Maintenance - Regular dependency updates - Browser compatibility checks - Performance optimization - Security audits