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
Request lifecycle
RouterFastRoute
Authenticationdot-authentication
RBAC guarddot-rbac-guard
Your handlerPSR-15
ResponseDiactoros
What it is

What is the Dotkernel Headless Platform?

The Dotkernel Headless Platform is made up of Open Source components aimed at businesses that need custom solutions. It supports microservices, as well as enterprise-grade APIs. Its modern, future-proof architecture is based on middleware and PSRs.

Extending the power of

Doctrine, not Active Record

Explicit wiring, no magic

One domain, three deployables

Dependencies that move slowly

Headless Platform

Three applications, one platform

API, Admin, and Queue declare the same Core namespaces - the same entities, repositories, and services. A User means the same thing to the endpoint that creates it, the admin screen that moderates it, and the worker that emails it. Three deployables that scale independently and never disagree about the domain.

Shared domain layer
Core\App Core\Admin Core\User Core\Security Core\Setting

One set of entities and repositories. Committed in each repo, so a single-component start just works. Commit it into its own repo and share it as a Git submodule when you add a second.

Deployable . Shares Core

API

The HTTP surface of your platform, ready for any client.

PHP version for dotkernel/api Latest release of dotkernel/api License of dotkernel/api GitHub stars for dotkernel/api

REST APIs on a readable PSR-15 middleware pipeline - no kernel, no facades, no runtime magic. OAuth2, RBAC, and OpenAPI included.

Deployable . Shares Core

Admin

A back office for complete control over the same data your API serves.

PHP version for dotkernel/admin Latest release of dotkernel/admin License of dotkernel/admin GitHub stars for dotkernel/admin

A ready-to-go admin skeleton - table-based CRUD screens for your records, plus the pieces for reports and dashboards.

Deployable . Shares Core

Queue

Work your users should not wait for, moved off the request.

PHP version for dotkernel/queue Latest release of dotkernel/queue License of dotkernel/queue GitHub stars for dotkernel/queue

Background job processing for the platform - dispatch work from API or Admin and run it in a separate worker. Built on Symfony Messenger.

Developer Tooling

Set up your workspace

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.

Tooling . Local Environment

Development Environment

A controlled local workspace for building and testing before release.

AlmaLinux on WSL2 for a RHEL-compatible local stack. One install script configures PHP, Apache, MariaDB, Git, Composer, Node.js, and phpMyAdmin.

Tooling . AI Context

Dotboost

Faster AI-assisted development, grounded in Dotkernel's own standards.

Dotkernel context for AI coding tools - current standards, architectural patterns, and framework idioms, so generated code matches the ecosystem instead of guessing at it.

Other skeletons

For projects outside the platform

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

Skeleton . Minimal

Light

A small site or service without a platform around it.

PHP version for dotkernel/light Latest release of dotkernel/light License of dotkernel/light GitHub stars for dotkernel/light

The smallest complete Mezzio application - PSR-15 pipeline, routing, and templating, nothing to strip out. A real starting point for a simple site.

Skeleton . Standalone

Frontend

A server-rendered web application you can build on.

PHP version for dotkernel/frontend Latest release of dotkernel/frontend License of dotkernel/frontend GitHub stars for dotkernel/frontend

A web starter skeleton for full-stack applications on Mezzio and Laminas - server-rendered Twig views, forms, sessions, and RBAC-guarded routes.

Components

Every layer, on its own

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 thephpleague/oauth2-client
Authorization +
dot-authorizationcore authorization interfaces
dot-rbacRBAC implementation
dot-rbac-guardRBAC for authorizing app sections
Controllers +
dot-controllercontroller-like middleware for Mezzio
Forms +
laminas-formvalidate and display forms
Session +
dot-sessionextends laminas-session
dot-flashmessengershort-lived session messages
dot-cacheextends symfony/cache
Logging & error handling +
dot-logstructured application logging
dot-errorhandlercentralized error handling
Emailing +
dot-mailextends symfony/mailer
Backend abstraction (database) +
doctrine/ormobject-relational mapper for PHP
doctrine/dbalDB abstraction, schema introspection
dot-data-fixturesextends doctrine/data-fixtures
Navigation +
dot-navigationeasy menu configuration & parsing
Template engine +
dot-twigrendererTwig + laminas-view helpers
Tools +
dot-annotated-servicesinject services via annotations
dot-eventextends laminas-eventmanager
dot-helpersshared utility helpers
dot-cliextends laminas-cli
dot-doctrine-metadataextends mezzio/mezzio-hal
dot-response-headercustom response headers
Extra libraries +
dot-user-agent-snifferparses device info from user agent
dot-debugbarextends maximebf/php-debugbar
dot-geoipextends maxmind/GeoIP2-php
Designed & built by Apidemia

Control, scalability & performance you can build on.

Dotkernel is an open-source project created and led by the dev team at Apidemia - built first as an internal tool for handling complex architectures, now freely shared as our way of giving back to the community.