Skip to content

Project Structure

Volare uses a monorepo structure with separate directories for backend, frontend, and documentation.

volare/
├── backend/ # Laravel 12 + FilamentPHP v5
├── frontend/ # Astro 5 public website
├── docs/ # Starlight documentation (this site)
├── .claude/ # Claude Code configurations
├── .github/ # GitHub Actions workflows
├── CLAUDE.md # Development guidelines
└── README.md # Project overview

The Laravel backend follows standard Laravel conventions with additional organization for services and FilamentPHP.

backend/
├── app/
│ ├── Actions/ # Single-purpose action classes
│ ├── Console/ # Artisan commands
│ ├── DTOs/ # Data Transfer Objects
│ ├── Enums/ # PHP enums (Role, Permission, etc.)
│ ├── Filament/ # FilamentPHP admin panel
│ │ ├── Pages/ # Custom admin pages
│ │ ├── Resources/ # CRUD resources
│ │ └── Widgets/ # Dashboard widgets
│ ├── Http/
│ │ ├── Controllers/ # API controllers
│ │ ├── Middleware/ # HTTP middleware
│ │ └── Requests/ # Form request validation
│ ├── Jobs/ # Queue jobs
│ ├── Models/ # Eloquent models
│ ├── Notifications/ # Notification classes
│ ├── Providers/ # Service providers
│ └── Services/ # Business logic services
├── config/ # Configuration files
├── database/
│ ├── factories/ # Model factories
│ ├── migrations/ # Database migrations
│ └── seeders/ # Database seeders
├── docs/ # Backend-specific documentation
├── public/ # Public assets
├── resources/
│ └── views/ # Blade templates
├── routes/
│ ├── api.php # API routes
│ ├── console.php # Artisan routes
│ └── web.php # Web routes
├── storage/ # Application storage
├── tests/
│ ├── Feature/ # Feature tests
│ └── Unit/ # Unit tests
├── composer.json # PHP dependencies
├── compose.yaml # Docker configuration
├── phpstan.neon # PHPStan configuration
└── phpunit.xml # PHPUnit configuration

Business logic layer. Each service encapsulates domain-specific operations.

Services/
├── AerticketCabinetService.php # AerTicket API HTTP client
├── AirportLookupService.php # PostgreSQL FTS for airports
├── CurrencyExchangeService.php # Currency exchange rates
├── GooglePlacesService.php # Google Places POI integration
├── ProductTemplateService.php # Product template management
├── Flights/Aerticket/ # AerTicket flight services
├── Payment/ # Stripe payment gateway
└── Checkout/ # Checkout session services

FilamentPHP v5 admin panel components.

Filament/
├── Pages/ # Custom admin pages
├── Resources/
│ ├── Bookings/ # Booking management
│ ├── FlightBookings/ # Flight booking details
│ ├── FlightSearches/ # Flight search interface
│ ├── ProductTemplates/ # Product templates
│ ├── ProductsByMarket/ # Market-specific products
│ ├── Suppliers/ # Supplier management
│ └── Users/ # User management
└── Widgets/ # Dashboard widgets

Queue jobs for async processing.

Jobs/
├── AerticketCreateBookingJob.php
├── AerticketIssueTicketJob.php
├── AerticketFastlaneTicketingJob.php
├── AerticketRetrieveBookingJob.php
├── AerticketVoidBookingJob.php
├── CreateCheckoutFlightBookingJob.php
├── SearchFlightCacheJob.php
└── GenerateAutoOffersJob.php

The Astro frontend follows Astro 5 conventions with feature-based organization.

frontend/
├── src/
│ ├── components/ # Reusable Astro components
│ ├── features/ # Feature-specific components
│ ├── layouts/ # Page layouts
│ │ └── MainLayout.astro
│ ├── pages/ # File-based routing
│ │ ├── index.astro
│ │ ├── [market]/ # Dynamic market routes
│ │ └── products/ # Product pages
│ ├── shared/ # Shared utilities
│ ├── styles/ # Global styles
│ └── env.d.ts # TypeScript environment
├── public/ # Static assets
├── astro.config.mjs # Astro configuration
├── package.json # Node dependencies
├── tailwind.config.mjs # Tailwind configuration
└── tsconfig.json # TypeScript configuration

File-based routing. Each .astro file becomes a route.

pages/
├── index.astro # / (homepage)
├── health.ts # /health (API endpoint)
├── [market]/ # /{market} (dynamic)
│ ├── index.astro # /{market}
│ └── products/
│ └── [slug].astro # /{market}/products/{slug}
└── products/
└── [slug].astro # /products/{slug}

Reusable page layouts with common elements (header, footer, meta tags).

Feature-specific components organized by domain.

This documentation site uses Starlight (Astro-based).

docs/
├── src/
│ ├── content/
│ │ └── docs/ # Documentation content
│ │ ├── index.mdx
│ │ ├── getting-started/
│ │ ├── backend/
│ │ ├── frontend/
│ │ ├── architecture/
│ │ ├── operations/
│ │ ├── guides/
│ │ └── reference/
│ └── content.config.ts
├── public/ # Static assets
├── astro.config.mjs # Starlight configuration
└── package.json
FilePurpose
CLAUDE.mdDevelopment guidelines and AI assistant instructions
.mcp.jsonMCP server configuration (Laravel Boost)
README.mdProject overview
FilePurpose
composer.jsonPHP dependencies
phpstan.neonStatic analysis (Level 6)
phpunit.xmlTest configuration
compose.yamlDocker services
.envEnvironment variables
FilePurpose
package.jsonNode dependencies
astro.config.mjsAstro configuration
tailwind.config.mjsTailwind CSS
tsconfig.jsonTypeScript