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.
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.
Doctrine, not Active Record
Explicit wiring, no magic
One domain, three deployables
Dependencies that move slowly
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.
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.
API
The HTTP surface of your platform, ready for any client.
REST APIs on a readable PSR-15 middleware pipeline - no kernel, no facades, no runtime magic. OAuth2, RBAC, and OpenAPI included.
Admin
A back office for complete control over the same data your API serves.
A ready-to-go admin skeleton - table-based CRUD screens for your records, plus the pieces for reports and dashboards.
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.
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.
For projects outside the platform
Not every project needs the full platform. These two skeletons stand on their own, outside the Headless Platform above.
Light
A small site or service without a platform around it.
The smallest complete Mezzio application - PSR-15 pipeline, routing, and templating, nothing to strip out. A real starting point for a simple site.
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 +
Authorization +
Controllers +
Forms +
Session +
Logging & error handling +
Emailing +
Backend abstraction (database) +
Navigation +
Template engine +
Tools +
Extra libraries +
Useful reads
How to build this website starting from Dotkernel Light
How this blog itself came together: starting from the Dotkernel Light starter project, then following the Tutorial 101 to add Doctrine ORM and load real data into the database.
Read more ->Request Lifecycle for a Mezzio-Based Application
Seamlessly Interconnected Middleware for Enterprise-Level Solutions The request lifecycle is the sequence of steps that happen from the moment a user makes an HTTP request until the server sends back a response. The graph below shows how the request is handled by Dotkernel Light (GitHub, documentation), one of the applications in the Dotkernel Headless Platform suite.
Read more ->Implementing Time-based One-Time Password (TOTP) in Dotkernel
What TOTP Does A Time-based One-Time Password (TOTP) is a security algorithm used as part of two-factor authentication (2FA) to protect against account attacks. The mechanism is integrated into dot-totp to enhance security by requiring both a password and an additional one-time code.
Read more ->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.