Frontend Assets and Build System
Overview
The www application uses a modern frontend build system with SASS, JavaScript bundling, and asset optimization for optimal performance and maintainability.
Asset Architecture
Directory Structure
src/assets/
├── sass/ # SASS/SCSS stylesheets
│ ├── theme/ # Bootstrap theme customization
│ ├── custom/ # Custom component styles
│ ├── print.scss # Print-specific styles
│ └── public.scss # Main stylesheet entry point
└── scripts/ # JavaScript source files
├── app/ # Application-specific scripts
├── theme/ # Theme-related JavaScript
└── utils.js # Utility functions
Compiled Assets
src/public/
├── css/ # Compiled stylesheets
│ ├── public.css # Main compiled CSS
│ ├── print.css # Print stylesheet
│ └── chatbot.css # Chatbot-specific styles
├── js/ # Compiled JavaScript
│ ├── theme.js # Theme functionality
│ ├── utils.js # Utility functions
│ └── vendor/ # Third-party libraries
├── fonts/ # Web fonts
├── img/ # Images and graphics
└── ico/ # Icons and favicons
SASS/CSS Architecture
Theme System
Based on Bootstrap 5.1.3 with extensive customizations:
1. Variables Layer (theme/1-variables/)
- App Variables (
_app.scss): Application-specific variables - Dark Theme (
_dark.scss): Dark mode color scheme - Fonts (
_fonts.scss): Typography definitions
2. Mixins Layer (theme/2-mixins/)
- Background Mixins: Background utilities
- Button Mixins: Button style variations
- Modal Mixins: Modal component styles
- Theme Mixins: Theme switching utilities
3. Components Layer (theme/3-components/)
Comprehensive component library:
- Navigation components (navbar, sidebar)
- Form components and validation
- Cards, modals, and layouts
- Charts and data visualization
- Custom UI elements
4. Utilities Layer (theme/4-utilities/)
- Background utilities
- Border and spacing utilities
- Typography utilities
- Position and z-index management
Custom Styles (custom/)
- Chatbot Styles (
_chatbot.scss): AI chatbot interface - Print Styles (
_print.scss): Print-specific layouts - Index Styles (
_index.scss): Custom component styles
Responsive Design
- Mobile-first approach
- Bootstrap breakpoint system
- Custom responsive utilities
- Touch-friendly interface elements
JavaScript Architecture
Application Scripts (scripts/app/)
Account Management
Comprehensive account functionality:
- Profile Management: User profile editing and updates
- Logbook System: Flight logging with validation
- Dashboard: User dashboard with data visualization
- Safety Training: Interactive training modules
- Payment Processing: Fee management and checkout
Authentication
- Login/Registration: User authentication forms
- Verification: Email and SMS verification
- Silent Login: Background authentication
- OAuth Integration: Google OAuth handling
Public Features
- Chatbot: AI-powered assistance
- Contact Forms: Contact and inquiry forms
- Tunnel Directory: Tunnel search and filtering
Theme Scripts (scripts/theme/)
- Bootstrap Integration: Bootstrap component initialization
- Sidebar Management: Navigation sidebar functionality
- Theme Switching: Light/dark mode toggle
- Vector Maps: Interactive map components
- Feather Icons: Icon management
Utility Scripts
- Common Utilities: Shared helper functions
- Form Validation: Client-side form validation
- API Helpers: AJAX request utilities
- Local Storage: Browser storage management
Build System
Build Tools
- ESBuild: Fast JavaScript bundling
- SASS: CSS preprocessing with Dart Sass
- Terser: JavaScript minification
- PostCSS: CSS post-processing
- Autoprefixer: Vendor prefix automation
Build Scripts
Development Build
npm run dev # Start development server with hot reload
npm run watch # Watch for file changes
npm run debug # Start with debugging enabled
Production Build
npm run build # Build optimized assets
npm run sass:build # Compile SASS only
npm run scripts:build # Bundle JavaScript only
Build Configuration
SASS Compilation
// Automated SASS compilation with:
// - Autoprefixer for vendor prefixes
// - Source maps for debugging
// - Minification for production
// - Watch mode for development
JavaScript Bundling
// ESBuild configuration:
// - Tree shaking for smaller bundles
// - Module resolution
// - Transpilation for browser compatibility
// - Source maps for debugging
Asset Optimization
Performance Features
- Code Splitting: Separate bundles for different sections
- Lazy Loading: On-demand asset loading
- Compression: Gzip compression for static assets
- Caching: Browser cache optimization
Image Optimization
- Multiple Formats: WebP, PNG, JPG support
- Responsive Images: Multiple sizes for different devices
- Icon Fonts: Font Awesome and Feather icons
- SVG Optimization: Compressed vector graphics
Font Management
- Web Fonts: Custom font loading
- Font Display: Optimized font rendering
- Font Subsetting: Reduced font file sizes
- Fallback Fonts: System font fallbacks
Development Workflow
Local Development
- Install dependencies:
npm install - Start development server:
npm run dev - Edit SASS/JS files in
src/assets/ - Watch automatic compilation and reload
Asset Pipeline
SASS Source → Compilation → Autoprefixer → Minification → public/css/
JS Source → Bundling → Transpilation → Minification → public/js/
Hot Reload
- Automatic browser refresh on file changes
- SASS compilation on save
- JavaScript bundling on save
- EJS template reloading
Third-Party Libraries
CSS Frameworks
- Bootstrap 5.1.3: UI framework foundation
- Font Awesome: Icon library
- Feather Icons: Lightweight icon set
JavaScript Libraries
- jQuery: DOM manipulation (legacy components)
- Chart.js: Data visualization
- Vector Maps: Interactive mapping
- SimpleMar: Custom scrollbars
Development Tools
- Nodemon: Development server with auto-restart
- Prettier: Code formatting
- ESLint: JavaScript linting
Browser Support
Target Browsers
- Chrome 90+
- Firefox 88+
- Safari 14+
- Edge 90+
Progressive Enhancement
- Core functionality works without JavaScript
- Enhanced features for modern browsers
- Graceful degradation for older browsers
- Accessibility-first approach
Performance Metrics
Asset Sizes (Production)
- CSS Bundle: ~150KB compressed
- JavaScript Bundle: ~200KB compressed
- Total Asset Size: ~2MB (including images and fonts)
Loading Performance
- First Contentful Paint: <2s
- Largest Contentful Paint: <3s
- Cumulative Layout Shift: <0.1