sightpress / core
Every core feature of SightPress, a powerful multi-site, multi-language CMS for everyone, designed with blind and low-vision content creators and audiences in mind. Written in modern, object-oriented PHP.
Requires
- php: ^8.4
- composer-runtime-api: ^2.2
- doctrine/dbal: ^4.2
- doctrine/doctrine-bundle: ^3.0
- doctrine/doctrine-migrations-bundle: ^4.0
- doctrine/orm: ^3.3
- doctrine/persistence: ^4.0
- monolog/monolog: ^3.0
- psr/log: ^3.0
- sightpress/plugin-core: ^1.2
- symfony/asset: ^8.0
- symfony/asset-mapper: ^8.0
- symfony/config: ^8.0
- symfony/console: ^8.0
- symfony/dependency-injection: ^8.0
- symfony/event-dispatcher: ^8.0
- symfony/framework-bundle: ^8.0
- symfony/http-foundation: ^8.0
- symfony/http-kernel: ^8.0
- symfony/intl: ^8.0
- symfony/monolog-bundle: ^4.0
- symfony/process: ^8.0
- symfony/routing: ^8.0
- symfony/security-core: ^8.0
- symfony/translation: ^8.0
- symfony/twig-bundle: ^8.0
- symfony/uid: ^8.0
- symfony/yaml: ^8.0
- twig/twig: ^3.14
Requires (Dev)
- deptrac/deptrac: ^4.0
- friendsofphp/php-cs-fixer: ^3.64
- phpstan/extension-installer: ^1.4
- phpstan/phpstan: ^2.1
- phpstan/phpstan-phpunit: ^2.0
- phpunit/phpunit: ^13.0
- rector/rector: ^2.0
- symfony/browser-kit: ^8.0
- symfony/css-selector: ^8.0
- symfony/filesystem: ^8.0
Suggests
None
Provides
None
Conflicts
None
Replaces
None
This package is auto-updated.
Last update: 2026-11-06 06:37:39 UTC
README
sightpress/core: the package that holds every core feature of SightPress, a
powerful multi-site, multi-language CMS for everyone, designed with blind and
low-vision content creators and audiences who use assistive technology in
mind. Written in modern, object-oriented PHP. Licensed GPL-2.0-or-later.
Status: M0, foundations. The installer, the plugin commands, the base admin layout and the accessibility checks are in place; content editing arrives in later milestones.
The core covers sites, hierarchical pages, authors, the media library (local, cloud storage or CDN), the widgets library, navigation menus, internal links that never break, the translation workflow, content planning with an editorial calendar, site profiles, logos and favicons, a home page on every site, the five generated legal pages, SEO and AIO, service email (invitations, password resets, security and system alerts), themes and the theme generator, the accessibility linter and publish gate, the accessibility dashboard and feedback form, the admin, the API, the installer and the plugin engine. Everything else ships as plugins.
Using it
You don't install this package on its own. Create a project from the skeleton, which requires it; the installer then offers the official plugins, and installs only the ones you choose:
composer create-project sightpress/skeleton my-site
Upgrade it with composer update "sightpress/*" followed by
php bin/console doctrine:migrations:migrate. The bundle brings its own
configuration, templates, translations and migrations, so an upgrade needs no
changes in your project. It follows SemVer; breaking changes only come in a
major version, with an upgrade note.
Related repositories
| Repository | Package | Purpose |
|---|---|---|
skeleton |
sightpress/skeleton |
The deployable project, with Docker support |
core (this one) |
sightpress/core |
Core features, plugin engine, installer |
plugin-core |
sightpress/plugin-core |
Plugin API and code shared by every plugin |
plugin-template |
sightpress/plugin-template |
Starting point for a new plugin |
plugin-<id> |
sightpress/plugin-<id> |
One official plugin each |
The core depends on sightpress/plugin-core and never on a plugin. It works
with every plugin removed.
Development
composer install composer qa # tests with 95% coverage, static analysis, style, boundaries, budgets, licences, audit vendor/bin/phpunit # on a test kernel, with no plugins npm ci && npm test # CSS rules, then the admin in a browser with axe-core, keyboard and RTL checks vendor/bin/sightpress-check-translations translations messages # every string in the 11 launch locales
The browser tests start PHP's built-in server on the test app. You can run
it yourself to look at the admin:
php -S 127.0.0.1:8123 tests/Fixtures/App/public/index.php, then open
http://127.0.0.1:8123/admin. Screen-reader test scripts and the
accessibility statement are in a11y/.
To run it inside a real app, check out skeleton next to this repository and
run COMPOSER=composer.dev.json composer install there.
Security
To report a vulnerability, follow SECURITY.md; please don't
open a public issue.