Skip to content

Installation

Before you begin, ensure you have the following installed:

  • Docker Desktop - For running Laravel Sail containers
  • PHP 8.4+ - Required by composer.json for running Composer locally (optional with Sail; the Sail containers ship PHP 8.5)
  • Node.js 20+ - Required by Astro 6 (Node 22 recommended)
  • pnpm - Package manager for frontend (the repo pins pnpm@11.0.8 via packageManager in frontend/package.json)
  • Composer - PHP dependency manager
  • Intelephense - PHP language server for IDE support (npm i -g intelephense)
Terminal window
git clone https://github.com/gocimit/volare.git
cd volare
Terminal window
cd backend
Terminal window
composer install
Terminal window
cp .env.example .env

Edit .env with your configuration:

Terminal window
APP_NAME=Volare
APP_ENV=local
APP_DEBUG=true
APP_URL=http://localhost
API_URL=http://localhost
DB_CONNECTION=pgsql
DB_HOST=pgsql
DB_PORT=5432
DB_DATABASE=volare
DB_USERNAME=sail
DB_PASSWORD=password
REDIS_HOST=redis
QUEUE_CONNECTION=database
# Stripe (see backend/services/stripe-setup for full guide)
STRIPE_KEY=pk_test_xxx
STRIPE_SECRET=sk_test_xxx
STRIPE_WEBHOOK_SECRET=whsec_xxx
CASHIER_CURRENCY=eur
CASHIER_CURRENCY_LOCALE=es_ES

APP_URL is the backend/admin origin. API_URL is the canonical public API origin used by browser-facing API requests and third-party callbacks. They are separate on production and should both be set explicitly.

For full Stripe setup including webhook forwarding and test data, see the Stripe Local Setup guide.

Terminal window
./vendor/bin/sail up -d

This starts:

  • Laravel application (port 80)
  • Queue worker (queue service: aerticket and general queues)
  • Flight-search queue worker (queue-flights service)
  • PostgreSQL database (port 5432)
  • Redis cache (port 6379)
  • Nightwatch agent (Laravel Nightwatch monitoring agent)
  • Mailpit email testing (port 8025)
Terminal window
./vendor/bin/sail artisan key:generate
Terminal window
./vendor/bin/sail artisan migrate
Terminal window
./vendor/bin/sail artisan db:seed
Terminal window
cd ../frontend
Terminal window
pnpm install
Terminal window
pnpm dev

The frontend will be available at http://localhost:4321.

The frontend deploys to Cloudflare Workers. Locally you only need the Node adapter, but for Cloudflare builds:

  • wrangler is already a dev dependency in frontend/package.json
  • Setting DEPLOY_TARGET=cloudflare switches astro.config.mjs to the @astrojs/cloudflare adapter
  • pnpm deploy-staging builds in staging mode and deploys via Wrangler
Service URL Port
Backend API http://localhost 80
Admin Panel http://localhost/admin 80
API Docs (Swagger) http://localhost/api/documentation 80
Telescope http://localhost/telescope 80
Frontend http://localhost:4321 4321
Documentation http://localhost:4322 4322
Mailpit http://localhost:8025 8025
Terminal window
# Start containers
./vendor/bin/sail up -d
# Stop containers
./vendor/bin/sail down
# Run tests
./vendor/bin/sail artisan test
# Run migrations
./vendor/bin/sail artisan migrate
# Clear cache
./vendor/bin/sail artisan cache:clear
# Format code
./vendor/bin/sail pint
Terminal window
# Development server
pnpm dev
# Production build
pnpm build
# Preview build
pnpm preview

If port 80 is in use, modify compose.yaml:

services:
laravel.test:
ports:
- '${APP_PORT:-8080}:80'

Ensure PostgreSQL container is running:

Terminal window
./vendor/bin/sail ps

Check database credentials in .env match compose.yaml.

If encountering permission issues:

Terminal window
sudo chown -R $USER:$USER .