Go to file
Arthur Parienté 5572b42fc9
feat(fares): expose auto-price fields in the admin UI
Add base_price/per_nm/multiplier to the fare form, the subfleet fares
relation manager (toggleable, shown when auto pricing is on and hidden
otherwise, with the static price column inverted), and the low_cost toggle
to the airline form. Round-trip the new columns through the fare
importers/exporters.
2026-06-16 22:17:40 +02:00
.github chore(tooling): use bun in release CI and drop package-lock.json 2026-06-14 13:28:10 +02:00
.hooks fix(pre-commit): add '--' to npm commands for proper argument handling 2026-04-25 10:15:33 +02:00
app feat(fares): expose auto-price fields in the admin UI 2026-06-16 22:17:40 +02:00
bin Updating styling and looks of the installer/admin/system filament pages (#2211) 2026-05-20 11:05:32 -05:00
bootstrap more refinement around the uninstall/removal process, added sample in for easier testing 2026-06-12 15:07:38 -05:00
config feat(addons): refactor module links and improve addon handling 2026-06-12 15:04:38 -05:00
database feat(fares): add auto-pricing settings 2026-06-16 22:16:54 +02:00
docs refactor(addons): remove AddonRegistry, refactor boot cache handling, and update tests 2026-06-12 14:58:44 -05:00
modules more refinement around the uninstall/removal process, added sample in for easier testing 2026-06-12 15:07:38 -05:00
public feat(flights): integrate ACARS addon check and update dependencies - minimum PHP version is n ow 8.4. A lot of fixes, verified the boot cache db upsert, etc 2026-06-12 15:04:38 -05:00
resources feat(fares): expose auto-price fields in the admin UI 2026-06-16 22:17:40 +02:00
routes more refinement around the uninstall/removal process, added sample in for easier testing 2026-06-12 15:07:38 -05:00
storage fix(addons): keep ModuleService working post-nwidart 2026-06-12 14:58:44 -05:00
tests mremove tests that rely on real modules 2026-06-13 03:06:46 -05:00
.dockerignore Add railpack for better Docker build 2026-05-27 23:24:49 -05:00
.editorconfig postgres fixes 2026-06-01 18:38:58 -05:00
.env.example Fix assets not building 2026-06-02 17:11:08 -05:00
.gitignore refactor(addons): remove deprecated tests, update service bindings, and improve addon handling 2026-06-12 14:58:44 -05:00
.htaccess Remove vendor from .htaccess (#1994) 2025-02-14 14:24:19 -06:00
.mise.toml More test fixes 2026-06-02 15:40:01 -05:00
.oxfmtrc.json postgres fixes 2026-06-01 18:38:58 -05:00
.oxlintrc.json Updating styling and looks of the installer/admin/system filament pages (#2211) 2026-05-20 11:05:32 -05:00
artisan [8.x] refactor: migrate to the new modern laravel structure (#2207) 2026-05-07 14:58:11 -05:00
bun.lock chore(deps): bump vite to 8.0.16 for stable rolldown 2026-06-14 12:08:58 +02:00
CHANGELOG.md add oxlint and oxfmt 2026-03-18 23:17:18 +01:00
compose.deploy.yml Eager load ref_model relationships in expense migration and add AUTORUN_ENABLED environment variable to deployment configuration. 2026-05-30 17:44:15 -05:00
compose.sail.yml Addons self-boot proof of concept 2026-06-12 14:58:44 -05:00
compose.test.yml More test fixes 2026-06-02 15:40:01 -05:00
composer.json chore(tooling): run dev scripts through bun instead of npm/npx 2026-06-14 12:10:10 +02:00
composer.lock feat(flights): integrate ACARS addon check and update dependencies - minimum PHP version is n ow 8.4. A lot of fixes, verified the boot cache db upsert, etc 2026-06-12 15:04:38 -05:00
Dockerfile.prod Rename active to enabled in multiple files and update related logic for consistency. 2026-05-29 18:26:49 -05:00
LICENSE Update LICENSE 2024-10-15 09:14:15 -05:00
mago.toml stupid pint errors 2026-06-13 00:40:11 -05:00
package.json chore(deps): bump vite to 8.0.16 for stable rolldown 2026-06-14 12:08:58 +02:00
phpstan.neon feat(schema-modernization): foundations for RouteForge 2026-05-23 12:05:09 -05:00
phpunit.xml postgres fixes 2026-06-01 18:38:58 -05:00
pint.json add oxlint and oxfmt 2026-03-18 23:17:18 +01:00
railpack.json Add railpack for better Docker build 2026-05-27 23:24:49 -05:00
README.md chore(tooling): use bun in release CI and drop package-lock.json 2026-06-14 13:28:10 +02:00
rector.php refactor(addons): remove deprecated tests, update service bindings, and improve addon handling 2026-06-12 14:58:44 -05:00
tsconfig.json feat(routeforge): admin batch flight composer + lint pipeline 2026-05-24 11:55:33 -05:00
vite.config.js feat(routeforge): admin batch flight composer + lint pipeline 2026-05-24 11:55:33 -05:00
vitest.config.ts test(routeforge): pest + vitest coverage + service fixes 2026-05-24 11:55:36 -05:00

phpVMS 8 - Build, Fly, Extend

BuildStyleCILicense

phpVMS is a PHP application to run and simulate an airline. It allowed users to register, view flight schedules that you create, and file flight reports, built on the Laravel framework. The latest documentation, with installation instructions is available on the phpVMS documentation site.

Installation

A full distribution, with all the composer dependencies, is available at this GitHub Releases link.

Requirements

  • PHP 8.3+, extensions:

    • cURL
    • JSON
    • fileinfo
    • mbstring
    • openssl
    • pdo
    • tokenizer
    • intl
    • zip
  • Database:

    • PostgreSQL 16+
    • MySQL 8.0+
    • MariaDB 10.6+
    • Redis 6.0+ (optional, recommended)

View more details on requirements

Production Deployment with Docker

The reference production stack is compose.deploy.yml. It runs the official phpvms image (built from the repo Dockerfile, based on serversideup/php:8.5-frankenphp) with Laravel Octane worker mode enabled, plus PostgreSQL and Redis. No separate web-server sidecar is needed — FrankenPHP serves HTTP/HTTPS directly.

docker compose -f compose.deploy.yml up -d

Octane worker mode

The image itself ships with serversideup's default classic FrankenPHP entry point (one PHP worker per request). compose.deploy.yml opts into Laravel Octane worker mode via a command: override on the app service — the pattern documented upstream.

To fall back to classic FrankenPHP + PHP-worker mode (matches the prior PHP-FPM request semantics — slower per request but bulletproof if a worker-mode bug hits), delete the command: line from the app service and recreate the container:

services:
  app:
    # command: [...octane:start...]   # remove this line

Module authors: under Octane the framework stays booted across requests, so avoid per-request data in singleton-bound services, static array accumulators, and boot()-time toggles without a matching per-request reset. See app/Http/Middleware/DisableActivityLoggingByDefault.php for the pattern used to keep activity logging request-scoped.

Development Environment

The development environment uses mise. You can read about mise and install it from here. If you want mise to handle installing the correct PHP version, you can run:

mise install

If you install the mise shell script integration, the correct PHP version will automatically be selected for you.~~~~

A full development environment can be brought up using Docker and Laravel Sail, without having to install composer/npm locally

make docker-test

# **OR** with docker directly

docker run --rm \
    -u "$(id -u):$(id -g)" \
    -v "$(pwd):/var/www/html" \
    -w /var/www/html \
    laravelsail/php84-composer:latest \
    composer install --ignore-platform-reqs

# Then you can start sail
./vendor/bin/sail up

Then go to http://localhost.

Instead of repeatedly typing vendor/bin/sail to execute Sail commands, you may wish to configure a shell alias that allows you to execute Sail's commands more easily:

alias sail='[ -f sail ] && sh sail || sh vendor/bin/sail'

Then you can execute php, artisan, composer, npm, etc. commands using the sail prefix:

# PHP commands within Laravel Sail...
sail php --version

# Artisan commands within Laravel Sail...
sail artisan about

# Composer commands within Laravel Sail...
sail composer install

# Bun commands within Laravel Sail...
sail bun run dev

To interact with databases (MariaDB, Redis...), please refer to the Laravel Sail documentation

Building JS/CSS assets

Yarn is required, run:

make build-assets

This will build all the assets according to the webpack file.

Laravel Boost

If you want to use AI agents for your development workflow, please ensure you install Laravel Boost by running the following command:

php artisan boost:install

Contributors

Thank you to everyone who've contributed to phpVMS!