Maintainer notes

Who this is for

Framework contributors only — people working on PioniaCore, the docs repo, or release tooling. App developers should use composer create-project pionia/pionia-app; DeskFlow examples are optional here.

What you will learn

  • How to scaffold apps from a local PioniaCore tree (php example/pionia new)
  • Release verification and bin/release workflow
  • Where AGENTS.md, tests, and framework documentation commands live

Before you start

Before you start
  • Local clone of PioniaCore with PHP 8.5+
  • Not required: DeskFlow or pionia/pionia-app — this page is maintainer-focused

Maintainers only

App developers should use composer create-project pionia/pionia-app. The commands on this page are for people working on PioniaCore or the docs repo itself.

How it works

Maintainer workflows sit outside the normal app bootstrap path: monorepo scaffolds, example app smoke tests, release archives, and contributor docs (AGENTS.md).

PioniaCore repo
  ├── example/pionia     → local CLI + sample app
  ├── bin/release        → tag + Packagist archive
  ├── bin/test           → PHPUnit (PHP 8.5+)
  └── AGENTS.md          → agent / contributor policy

Scaffold from a local PioniaCore tree

When developing the framework monorepo:

php example/pionia new my-app --install

This mirrors the Packagist template using core stubs in src/Pionia/Resources/scaffolds/app/.

Running the example app

cd PioniaCore/example
php pionia serve
php pionia runserver
bin/test

Release workflow

See AGENTS.md in PioniaCore:

bin/release v3.0.0 --dry-run
composer release:verify

Documenting the framework

composer document:api          # example app OpenAPI
composer document:framework    # phpDocumentor → build/docs/

AI / agent contributors

Cursor rules and AGENTS.md describe boot order, exception pipeline, and test policy for automated PRs.

Common mistakes

  • Documenting php example/pionia on app-developer tutorial pages — belongs here only
  • Running bin/release without composer release:verify and passing tests
  • Committing generated framework-preload.php — release tooling generates it for the archive only
  • Skipping tests (bin/test) when changing core boot order or provider hooks

What’s next

Getting started

Build an application, not the framework.

Extending overview

Packages and AppProvider for app authors.

Helpers reference

Global shortcuts after boot.