Documentation
PSR-15 · middleware-first architecture

A headless platform for building modern web applications

Dotkernel is a set of open-source PHP applications - REST API, admin, and queue - that ship assembled on Mezzio and Laminas, over one shared Doctrine domain layer called Core. OAuth2, RBAC, HAL, and a generated OpenAPI spec are wired together on install, not left for you to choose.

Runtime
Mezzio + Laminas
Standards
PSR-7 · PSR-11 · PSR-15
License
MIT

Headless Platform

API, Admin, and Queue declare the same Core namespaces - the same entities, repositories, and services. Three deployables that scale independently and never disagree about the domain.

Developer tooling

A production-like environment on your machine, and the context your AI tools need to write Dotkernel code - both ready before anything reaches your users.

Other skeletons

Not every project needs the full platform. These two skeletons stand on their own, outside the Headless Platform above.

Packages

Small, independent dot-* packages - pull in what you need. Lifecycle status for each lives on the Packages Lifecycle page.

Application
dot-data-fixturesCLI interface for interacting with doctrine/data-fixtures
dot-controllercontrollers usable like middleware inside Dotkernel or Mezzio
dot-flashmessengerflash messenger library for session messages between redirects
dot-navigationconfigurable navigation elements, configuration-based approach
dot-response-headermiddleware for setting and overwriting custom response headers
dot-twigrendererTwig extensions and customizations
Security
dot-auth-socialauthenticate users through social networks, return credentials + user details
dot-authenticationbase package defining authentication service interfaces
dot-authorizationbase package defining authorization service interfaces
dot-rbacRBAC authorization implementation
dot-rbac-guardRBAC handler/controller guard for authorizing app sections
dot-rbac-route-guardRBAC handler guard for authorizing app sections
dot-sessionextends and customizes laminas/laminas-session
dot-totpTime-Based One-Time Password (TOTP) authorization component
Tools
dot-annotated-servicesannotation-based dependency injection
dot-dependency-injectionattribute-based dependency injection
dot-cachecache component based on symfony/cache
dot-clibuild console applications based on laminas/laminas-cli
dot-debugbardebug bar built on top of maximebf/php-debugbar
dot-errorhandlererror logging component
dot-eventextends and customizes laminas/laminas-eventmanager
dot-geoipgeographical details about an IP address
dot-helpershelper structures and classes, based on mezzio/mezzio-helpers
dot-logstructured application logging
dot-mailmail component based on symfony/mailer
dot-makergenerates Dotkernel project files and directories
dot-routercomplex routing, based on mezzio/mezzio-fastroute
dot-user-agent-snifferdevice details parsed from a user agent, based on matomo/device-detector

Also used, without a dedicated package page: doctrine/orm (object-relational mapper for PHP), doctrine/dbal (DB abstraction, schema introspection).

Contributing and Support

Contributing

If you wish to contribute to the project, read the contributing guidelines.

Support

If you need support with the project, join us on Slack.

Discussions

For open discussions, please use GitHub Discussions.

Security

For reporting security issues, please review our security policy.