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.

Authentication
dot-authenticationcore authentication interfaces
dot-auth-socialFacebook auth via oauth2-client
Authorization
dot-authorizationcore authorization interfaces
dot-rbacRBAC implementation
dot-rbac-guardRBAC for authorizing app sections
Logging & error handling
dot-logstructured application logging
dot-errorhandlercentralized error handling
Session
dot-sessionextends laminas-session
dot-flashmessengershort-lived session messages
dot-cacheextends symfony/cache
Database
doctrine/ormobject-relational mapper for PHP
doctrine/dbalDB abstraction, schema introspection
dot-data-fixturesextends doctrine/data-fixtures
Tools
dot-cliextends laminas-cli
dot-eventextends laminas-eventmanager
dot-helpersshared utility helpers

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.