crystoline / xpsr
XPSR application skeleton: a PHP framework built around PSR interfaces and interchangeable components
v0.8.0
2026-11-04 16:33 UTC
Requires
- php: ^8.4
- crystoline/xpsr-framework: ^0.8
- crystoline/xpsr-router-fastroute: ^0.8
- nyholm/psr7: ^1.8.2
- twig/twig: ^3.4
Requires (Dev)
- filp/whoops: ^2.18.4
- phpunit/phpunit: ^12.5
Suggests
- crystoline/xpsr-api: JSON API responses: resources with conditional fields and a data envelope, and pagination of DBAL, Doctrine, and Eloquent queries
- crystoline/xpsr-audit: An audit log: who changed what, when, and from where, with before and after values, by hand or automatically for models and entities
- crystoline/xpsr-auth-jwt: JWT sign-in for APIs: the jwt guard driver, JwtIssuer, and auth:jwt-secret
- crystoline/xpsr-auth-oauth2-server: An OAuth2 authorization server on league/oauth2-server: client credentials, authorization code with PKCE, and refresh tokens; the oauth2 guard driver; clients, scopes, and consent
- crystoline/xpsr-broadcast: Live updates to browsers through a Mercure hub: publish to topics from code, events, or a queue job after the transaction commits, private topics with a cookie for the signed-in user, and hub_url() in templates
- crystoline/xpsr-cache: Application cache (PSR-16 and PSR-6) and the cache:clear command
- crystoline/xpsr-database: Database connections (Doctrine DBAL) and migrations
- crystoline/xpsr-health: Health checks: live and ready endpoints and a health command checking the database, cache, queue and workers, scheduler, locks, disk, and HTTP dependencies
- crystoline/xpsr-http-client: Outgoing HTTP: a configured PSR-18 client and named clients
- crystoline/xpsr-lock: Locks across processes and servers: files, Redis, Redlock, or the database
- crystoline/xpsr-log-monolog: Monolog logging: stderr, file, daily, or syslog; JSON lines; request IDs
- crystoline/xpsr-mail: Email on Symfony Mailer: a DSN transport, templates from the view layer, queued sending
- crystoline/xpsr-notifications: Notifications by email, SMS, an in-app inbox, and browser push
- crystoline/xpsr-orm-cycle: Cycle ORM: attribute-mapped entities on XPSR's database connections, with one shared transaction, migrations generated from the schema, entity behaviors, and a user provider
- crystoline/xpsr-orm-doctrine: Doctrine ORM entities on the XPSR database connection
- crystoline/xpsr-orm-eloquent: Eloquent models on the XPSR database connection
- crystoline/xpsr-queue: Queued jobs on Symfony Messenger: sync, database, Redis, AMQP, or SQS, with retries and a failed jobs table
- crystoline/xpsr-router-sunrise: Sunrise router adapter. Select it with: php xpsr setup --router=sunrise --install-dependencies
- crystoline/xpsr-scheduler: Scheduled tasks: commands, closures, and queued jobs on cron schedules, from one cron entry
- crystoline/xpsr-storage: File storage on Flysystem: named disks such as local and S3, uploads, and downloads
- crystoline/xpsr-telemetry: Distributed tracing on OpenTelemetry: requests, queries, outgoing calls, jobs, commands, and tasks as one trace, exported over OTLP
- crystoline/xpsr-translation: Translations: message files per locale, the request's locale from its route, session, cookie, or Accept-Language header, trans() in code and templates, and translated validation messages
- crystoline/xpsr-validation: Request validation: input classes with Symfony Validator rules, 422 with field errors
- crystoline/xpsr-view-blade: Blade (standalone, through illuminate/view) as the view engine: app.view_engine blade
- crystoline/xpsr-view-latte: Latte (context-aware escaping) as the view engine: app.view_engine latte
- crystoline/xpsr-view-plates: Plates (native PHP templates) as the view engine: app.view_engine plates
- crystoline/xpsr-webhooks: Webhooks: signed deliveries to subscribed endpoints with retries and a delivery log, and verification of the webhooks providers send
Provides
None
Conflicts
None
Replaces
None