Files

127 lines
3.4 KiB
Markdown

# Base Layout Implementation
## Overview
The base layout has been migrated from Django to Laravel while maintaining design parity and functionality. The implementation uses Laravel's Blade templating system and leverages Laravel's built-in features.
## Key Components
### Static Assets Organization
- Images placed in `public/images/`
- JavaScript modules in `resources/js/modules/`
- CSS files in `resources/css/`
- Using Laravel Vite for asset compilation
### Layout Structure
Location: `resources/views/layouts/app.blade.php`
### Key Changes from Django Implementation
1. Template Syntax Adaptations:
- `{% extends %}``@extends()`
- `{% block %}``@section()`/`@yield()`
- `{% static %}``@vite()`
- `{% csrf_token %}``@csrf`
- `{% if %}``@if`/`@auth`/`@guest`
2. Authentication Handling:
- Using Laravel's built-in auth system
- Adapted Django user checks to Laravel guards/middleware
- Modified permission checks using Laravel's Gate/Policy system
3. Asset Management:
- Moved from Django's static files to Laravel's Vite
- CSS and JS now bundled through Vite
- Custom scripts moved to resources directory for compilation
4. Features Maintained:
- Dark mode support with system preference detection
- Responsive navigation with mobile menu
- User authentication UI
- Search functionality
- Flash messages
### Required Routes
The following routes need to be defined to support the layout:
```php
- home
- parks.index
- rides.index
- search
- moderation.dashboard
- profile.show
- settings
- admin.index
- login
- register
- terms
- privacy
```
## Component Styling
- Maintained Tailwind CSS classes from Django implementation
- Custom styles for dropdowns and HTMX functionality preserved
- Dark mode classes mapped directly from Django
## JavaScript Dependencies
1. Core Libraries:
- Alpine.js (via Vite)
- HTMX (via CDN)
- Font Awesome (via CDN)
2. Custom Modules (migrated to resources/js/modules):
- alerts.js
- location-autocomplete.js
- main.js
- park-map.js
- photo-gallery.js
- search.js
## Next Steps
1. Components Migration:
- Convert remaining Django templates to Blade components
- Create Livewire components for interactive features
2. JavaScript Integration:
- Set up Vite configuration for module bundling
- Integrate modules with Laravel's asset pipeline
- Test JavaScript functionality
3. Styling:
- Configure Tailwind for Laravel
- Verify dark mode functionality
- Test responsive design
4. Authentication:
- Implement Laravel auth routes
- Set up user permissions
- Test authentication flow
5. Testing:
- Verify all interactive features
- Test responsive design
- Ensure dark mode works correctly
- Validate authentication flows
## Technical Notes
### Performance Considerations
1. Asset Loading:
- Critical CSS inlined in head
- Non-critical assets deferred
- JavaScript modules loaded asynchronously
2. Optimization:
- Images placed in public directory for direct serving
- CSS/JS bundled and minified via Vite
- Caching headers maintained
### Browser Compatibility
- Maintains support for modern browsers
- Dark mode detection uses modern APIs
- Fallbacks in place for older browsers
### Security
- CSRF protection implemented
- XSS prevention through Laravel's security features
- Content Security Policy considerations documented