Backend Overview
The Volare backend is built with Laravel 12 and FilamentPHP v4, providing a robust foundation for the travel platform.
Technology Stack
Section titled “Technology Stack”| Component | Technology | Version |
|---|---|---|
| Framework | Laravel | 12.x |
| Admin Panel | FilamentPHP | 4.x |
| Livewire | Livewire | 3.x |
| PHP | PHP | 8.4 |
| Database | PostgreSQL | 16 |
| Queue | Redis + Horizon | 7.x |
| Testing | Pest | 3.x |
Architecture Overview
Section titled “Architecture Overview”┌─────────────────────────────────────────────────────────────┐│ HTTP Layer │├─────────────────────────────────────────────────────────────┤│ API Controllers │ Filament Resources │ Livewire │├─────────────────────────────────────────────────────────────┤│ Service Layer ││ AerticketService │ BookingService │ ProductService │ ... │├─────────────────────────────────────────────────────────────┤│ Data Layer ││ Eloquent Models │ DTOs │ Repositories │├─────────────────────────────────────────────────────────────┤│ Infrastructure ││ PostgreSQL │ Redis │ Queue Jobs │ External APIs │└─────────────────────────────────────────────────────────────┘Key Components
Section titled “Key Components”Services
Section titled “Services”Business logic is encapsulated in service classes:
- AerticketService - Flight search, booking, and ticketing integration
- BookingService - Booking lifecycle management
- ProductService - Travel product management
- OfferService - Offer creation and management
- AirportSearchService - PostgreSQL full-text search for airports
Filament Resources
Section titled “Filament Resources”Admin panel CRUD operations:
- ProductResource - Travel products management
- BookingResource - Booking management
- FlightBookingResource - Flight booking details
- UserResource - User management with RBAC
- OfferResource - Offer management
Queue Jobs
Section titled “Queue Jobs”Async processing with Redis:
- ProcessBooking - Handle booking workflow
- SyncFlightPrices - Update flight prices
- SendNotification - Dispatch notifications
API Structure
Section titled “API Structure”Multi-Market API
Section titled “Multi-Market API”Path-based routing for market-specific content:
GET /api/{market}/products # List products for marketGET /api/{market}/products/{id} # Get product by IDGET /api/{market}/products/slug/{slug} # Get product by slugGET /api/{market}/config # Get market configurationBooking API
Section titled “Booking API”Async booking workflow:
POST /api/bookings # Create bookingGET /api/bookings/{id} # Get booking statusPOST /api/bookings/{id}/confirm # Confirm bookingDatabase Design
Section titled “Database Design”Key Models
Section titled “Key Models”- Product - Base travel products
- MarketProduct - Market-specific product translations
- Booking - Customer bookings
- FlightBooking - Flight-specific booking data
- Offer - Combined product + flight offers
- Airport - Airport data with FTS support
Relationships
Section titled “Relationships”Product ─┬─ hasMany ─── MarketProduct └─ hasMany ─── Offer
Booking ─┬─ belongsTo ─ User └─ hasOne ──── FlightBooking
Offer ──┬─ belongsTo ── MarketProduct └─ belongsTo ── FlightBookingAuthentication & Authorization
Section titled “Authentication & Authorization”Authentication
Section titled “Authentication”- Session-based auth for admin panel
- Google OAuth integration
- API tokens for external access
Authorization (RBAC)
Section titled “Authorization (RBAC)”PHP enums for type-safe roles and permissions:
enum Role: string{ case Admin = 'admin'; case DmcManager = 'dmc_manager';}
enum Permission: string{ case ViewProducts = 'view_products'; case ManageProducts = 'manage_products'; // ...}Configuration
Section titled “Configuration”Environment Variables
Section titled “Environment Variables”Key environment variables:
# ApplicationAPP_ENV=productionAPP_DEBUG=false
# DatabaseDB_CONNECTION=pgsqlDB_HOST=pgsqlDB_DATABASE=volare
# QueueQUEUE_CONNECTION=redisREDIS_HOST=redis
# External APIsAERTICKET_API_URL=https://api.aerticket.comAERTICKET_API_KEY=your_keyQueue Configuration
Section titled “Queue Configuration”'connections' => [ 'redis' => [ 'driver' => 'redis', 'connection' => 'default', 'queue' => 'default', 'retry_after' => 90, ],],Development Commands
Section titled “Development Commands”# Start development environment./vendor/bin/sail up -d
# Run migrations./vendor/bin/sail artisan migrate
# Run tests./vendor/bin/sail artisan test
# Clear cache./vendor/bin/sail artisan optimize:clear
# Generate IDE helpers./vendor/bin/sail artisan ide-helper:generateNext Steps
Section titled “Next Steps”- API Reference - Detailed API documentation
- Services - Service documentation
- Authentication - RBAC details