seatplus/core

SeAT fork to add the very special plus, to make seat even better.

Maintainers

Package info

github.com/seatplus/core

Type:project

pkg:composer/seatplus/core

Transparency log

Statistics

Installs: 631

Dependents: 0

Suggesters: 0

Stars: 1

Open Issues: 2


README

This is the core package of Seatplus. It contains the basic functionality of the Seatplus ecosystem.

At its core it uses the Laravel framework.

These are the adaptions to the Laravel framework required for Seatplus.

Adaptions

  • Trusted proxies are set to * in bootstrap/app.php (->withMiddleware(... trustProxies(at: '*'))) to allow for reverse proxying.
  • config/logging.php is modified to use the daily driver for LOG_CHANNEL.

Local package development (local:on / local:off)

Core consumes the seatplus/* packages (esi-client, esi-schema, eveapi, auth, web) from Packagist by default — a plain composer install pulls the published versions, and CI/production resolve them the same way.

To develop a package against core, clone the sibling repo into packages/<name> (these checkouts are gitignored — local-dev only) and switch on the local override:

# clone the package(s) you want to work on
git clone git@github.com:seatplus/web.git packages/web

composer run local:on     # generate composer.local.json with path repos for
                          # whichever packages/* are present
composer update           # resolve seatplus/* from the local checkouts

local:on runs local-packages.php, which writes a gitignored composer.local.json containing a type: path repository for each checked-out packages/*. wikimedia/composer-merge-plugin (configured under extra.merge-plugin in composer.json) merges those repositories, so Composer resolves the linked packages from your local source (symlinked into vendor/). A package that isn't checked out is simply skipped, so a missing directory never breaks composer install.

Switch back to the published versions with:

composer run local:off    # remove composer.local.json
composer update           # resolve seatplus/* from Packagist again

Because composer.local.json is gitignored, CI and production always resolve from Packagist regardless of your local state.

Browser tests

End-to-end browser tests (Pest 4 + pest-plugin-browser, headless Chromium via Playwright) run against the fully assembled core app. The tests themselves are owned by seatplus/web and authored next to the Vue pages; core just runs them against a real routing/middleware/asset stack.

composer run browser         # sync the web tests, then run headless
composer run browser:debug   # same, but headed / with debug output
composer run browser:sync    # only copy the tests in (no run)

browser:sync runs browser-tests.php, which mirrors vendor/seatplus/web/tests/Browser into tests/Browser/web (the Packagist install in CI, or the symlinked local checkout under local:on). That destination — and tests/Browser/Screenshots/ — are gitignored: they are generated, not committed. The source of truth lives in seatplus/web.

Prerequisites: built frontend assets (npm run build) and the Playwright browser binaries. Screenshots from a run land in tests/Browser/Screenshots/.

⚠️ Dedicated test database. These tests use RefreshDatabase (migrate:fresh), so they must never run against the dev database — that would wipe it. phpunit.xml pins the test DB to seatplus_testing (force="true", so it holds regardless of the DB_DATABASE env var). Create it once before running:

createdb seatplus_testing        # same host/user/password as the dev DB

CI must provide a seatplus_testing database for the browser job. SQLite :memory: is not usable (pgsql-specific migrations + the in-process browser server).