If you are searching for :
Else, you are at the good place.
Here, we will speak about :
The code for all officially maintained extension and the core is kept in an unique repository.
It's a mono-repository.
It's kind of majestic monolith.
The core contain the minimum features, then everything is done via extensions.
The core code follows as much as it can the symfony good practices and has a special folder named component for bigger features like the Entity Filter system if they do not have their own independent package.
Each extension is optional.
Keeping all these extensions in one repository permits testing that everything works easily, understanding the code faster and refactoring much quicker.
The skeleton isn't a real skeleton (copy and install).
It's used for testing, demo, using for generating the docs and a few class from skeleton are extracted by the default installer.
Each package (except skeleton, installer and js-helper) is built as a symfony bundle.
The core package requires a Symfony app installed to be functional.
Want a particular details about the way the code is organized ?
Feel free to ask, I will list answers here.
This is only for contribution, if you are searching to develop a new application with Pushword, see installation.
composer update && composer reset-skeleton
# php-cs-fixer
composer format
# run rector, format and tests
composer rector
# run phpstan
composer stan
# to play with default app console (skeleton)
composer console ...
| Package | Purpose | Depends on |
|---|---|---|
| core | Base entities (Page, Media, User), entity filters, events, controllers, Twig extensions | — |
| admin | CRUD interface for Page, Media, User built on EasyAdmin | core |
| admin-block-editor | Rich text / block editor for the admin | core |
| advanced-main-image | Main image format options (hidden, hero, etc.) and default templates | core, admin |
| conversation | Comments, contact forms, user input | core, flat |
| docs | Project documentation (ships to end users as vendor/pushword/docs/content/) | — |
| flat | Flat-file CMS mode: sync pages/media between database and filesystem | core |
| installer | Bootstraps a new Pushword project | core |
| js-helper | Shared JavaScript utilities (Node package) | — |
| admin-monaco-editor | Monaco code editor for admin (Node package) | — |
| new | Meta-package that pulls in core + admin + common extensions | core |
| page-scanner | Dead link detection, 404/301 checks, TODO scanning | core |
| page-update-notifier | Email notifications on page edits | core |
| search | Optional SQLite full-text search via Loupe (zero infra) | core |
| skeleton | Dev/test/demo app (not a real skeleton for end users) | core |
| snippet | Reusable content fragments + dev-registered components, via snippet() | core |
| static-generator | Generate static HTML sites | core |
| template-editor | Edit Twig templates from the admin UI | core |
| version | Page versioning | core |