Skip to content

Local development

The repository is a monorepo holding three packages:

Path Package Contents
packages/server bambamboole/laravel-oidc-server The OIDC provider and auth engine
packages/client bambamboole/laravel-oidc-client The relying-party client
packages/ui bambamboole/laravel-oidc-ui The Lattice-powered auth UI

Each package has its own composer.json, test suite, and tooling; the root composer.json provides aggregate scripts that fan out across all three.

Terminal window
git clone git@github.com:bambamboole/laravel-oidc.git
cd laravel-oidc
composer install:all

composer install:all runs composer install inside each package. Because bambamboole/laravel-oidc-server is not on Packagist yet, the packages/ui install resolves it from the sibling packages/server checkout: the script backs up packages/ui/composer.json, writes a temporary path repository into it (version taken from .release-please-manifest.json), installs, and restores the file — composer.json ends up unchanged, and each package’s composer.lock is git-ignored. composer install:ui reruns just that leg; the manual equivalent is documented in packages/ui/composer.local-dev.md.

The packages are developed against an Orchestra Testbench harness — there is no full Laravel app to boot. Each package’s install wires itself into its harness via its post-autoload-dump script (testbench package:discover); composer clear inside a package purges the generated skeleton if you need to reset it.

From the repository root:

Terminal window
composer check # every package: Pint --test, PHPStan, Pest in sequence
composer check:server # a single package's gate
composer check:client
composer check:ui
composer test # every package's Pest suite only

Inside a package directory, the individual tools are available directly:

Terminal window
composer test:lint # Pint in --test mode (fails on style violations)
composer analyse # PHPStan static analysis
composer test # Pest test suite
composer lint # Pint (applies fixes)

Run composer check from the root before opening a pull request — CI runs the same tools across a Laravel 12 / 13 matrix.

The documentation is an Astro Starlight site — content lives under docs/, and the Node toolchain runs from the repository root:

Terminal window
npm install
npm run docs:dev # local dev server with hot reload
npm run docs:build # production build
npm run docs:preview # preview the production build

Pages live under docs/content/docs/ as Markdown with Starlight frontmatter (title, description). Match the voice and cross-linking of the existing pages when adding new ones.