
{"id":132,"date":"2018-07-06T00:09:32","date_gmt":"2018-07-06T00:09:32","guid":{"rendered":"http:\/\/import.themovation.com\/pursuit\/appsaas\/?page_id=1041"},"modified":"2026-04-26T17:51:45","modified_gmt":"2026-04-26T17:51:45","slug":"home-app","status":"publish","type":"page","link":"https:\/\/www.dotkernel.com\/","title":{"rendered":""},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"132\" class=\"elementor elementor-132\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-d0d6ab6 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"d0d6ab6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-e3a6bb1\" data-id=\"e3a6bb1\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-a5e47a0 e-transform elementor-widget__width-initial elementor-widget elementor-widget-heading\" data-id=\"a5e47a0\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_transform_scale_effect&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;_transform_scale_effect_tablet&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;_transform_scale_effect_mobile&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]}}\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\">Dotkernel is a Headless Platform<br>for building modern web applications<\/h1>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-2d33beb elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"2d33beb\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-953c720\" data-id=\"953c720\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-336eab6 elementor-widget__width-initial elementor-widget elementor-widget-heading\" data-id=\"336eab6\" data-element_type=\"widget\" data-e-type=\"widget\" id=\"banner-subtitle\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h5 class=\"elementor-heading-title elementor-size-default\">Dotkernel is a collection of applications (skeletons) that use a middleware-first architecture built on top of the Mezzio microframework using Laminas components. The goal is to provide a pre-configured environment for applications ranging from presentation sites, to enterprise-level APIs and everything in between.<\/h5>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-18f9259 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"18f9259\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-top-column elementor-element elementor-element-8285caf\" data-id=\"8285caf\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-b129c93 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"b129c93\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-c55cd26\" data-id=\"c55cd26\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-910eb44 elementor-widget__width-initial elementor-widget elementor-widget-heading\" data-id=\"910eb44\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">What is the <b>Dotkernel Headless Platform<\/b>?<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-97c7aca elementor-widget__width-initial elementor-widget elementor-widget-text-editor\" data-id=\"97c7aca\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p style=\"line-height: 30px !important; font-size: 18px; font-family: 'Cairo', sans-serif;\">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.<\/p>\n\n<p style=\"font-size: 24px;\n  font-weight: 700;margin: 20px 0;\">Extending the power of<\/p>\n\n<img decoding=\"async\" src=\"https:\/\/www.dotkernel.com\/wp-content\/uploads\/2025\/09\/mezzio-by-laminas.svg\" \/>\n<div><\/div>\n<div><\/div>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-top-column elementor-element elementor-element-9614d6b\" data-id=\"9614d6b\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-05eab21 elementor-widget__width-initial elementor-widget elementor-widget-html\" data-id=\"05eab21\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"what-is-row\">\n    <div class=\"col-md-6 what-is-box\">\n\t    <img decoding=\"async\" src=\"https:\/\/www.dotkernel.com\/wp-content\/uploads\/2025\/06\/traffic-sign-50.png\">\n        <p>Unmatched flexibility<\/p>\n    <\/div>\n    <div class=\"col-md-6 what-is-box\">\n\t    <img decoding=\"async\" src=\"https:\/\/www.dotkernel.com\/wp-content\/uploads\/2025\/06\/success-50.png\">\n        <p>Unlimited scalability<\/p>\n    <\/div>\n<\/div>\n<div class=\"what-is-row\">\n    <div class=\"col-md-6 what-is-box\">\n\t    <img decoding=\"async\" src=\"https:\/\/www.dotkernel.com\/wp-content\/uploads\/2025\/06\/speed-radar-50.png\">\n        <p>Lightning-fast performance<\/p>\n    <\/div>\n    <div class=\"col-md-6 what-is-box\">\n\t    <img decoding=\"async\" src=\"https:\/\/www.dotkernel.com\/wp-content\/uploads\/2025\/06\/maintenance.png\">\n        <p>Easier maintenance and onboarding<\/p>\n    <\/div>\n<\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-48d69cd elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"48d69cd\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-8cc92b0\" data-id=\"8cc92b0\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-ad576ce elementor-widget__width-initial elementor-widget elementor-widget-html\" data-id=\"ad576ce\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"boxes boxes-border\">\n\t<h1 style=\"width: 100%;text-align: center;font-size: 34px;font-weight: 700;\">Headless Platform<\/h1>\n\t<p style=\"text-align: center;width: 100%;font-size:18px;line-height: 30px !important;\">Built from <b>independent applications<\/b> that can be integrated<br>into a <b>unified platform<\/b> that is better than the sum of its parts.<\/p>\n<div class=\"box api\">\n<div class=\"title\"><span class=\"star\">*<\/span> API\n\n<\/div>\n\n<div class=\"contents\">\n\n<div class=\"left\">\n\n<div class=\"item\">\n<div class=\"name\">PHP<\/div>\n<img decoding=\"async\" style=\"display: inline-block;\" title=\"PHP from Packagist (specify version)\" src=\"https:\/\/img.shields.io\/packagist\/dependency-v\/dotkernel\/api\/php?style=flat&amp;label=&amp;color=B9E3BB\">\n<\/div>\n\n<div class=\"item\">\n<div class=\"name\">Packagist<\/div>\n<img decoding=\"async\" style=\"display: inline-block;\" title=\"Packagist Version\" src=\"https:\/\/img.shields.io\/packagist\/v\/dotkernel\/api?style=flat&amp;label=&amp;color=B9E3BB\">\n<\/div>\n\n<div class=\"item\">\n<div class=\"name\">License<\/div>\n<a style=\"display: inline-block;\" href=\"https:\/\/github.com\/dotkernel\/api\/blob\/5.0\/LICENSE.md\" target=\"_blank\" rel=\"noopener noreferrer\">\n<img decoding=\"async\" title=\"GitHub License\" src=\"https:\/\/img.shields.io\/github\/license\/dotkernel\/api?style=flat&amp;label=&amp;color=B9E3BB\">\n<\/a>\n<\/div>\n\n<div class=\"item\">\n<div class=\"name\">Issues<\/div>\n<a style=\"display: inline-block;\" href=\"https:\/\/github.com\/dotkernel\/api\/issues\" target=\"_blank\" rel=\"noopener noreferrer\">\n<img decoding=\"async\" title=\"GitHub issues\" src=\"https:\/\/img.shields.io\/github\/issues\/dotkernel\/api?style=flat&amp;label=&amp;color=B9E3BB\">\n<\/a>\n<\/div>\n\n<div class=\"item\">\n<img decoding=\"async\" title=\"GitHub stars\" src=\"https:\/\/www.dotkernel.com\/wp-content\/uploads\/2024\/05\/github-white.svg\">\n<div class=\"name-no-image\">Stars<\/div>\n<a style=\"display: inline-block;\" href=\"https:\/\/github.com\/dotkernel\/api\/stargazers\" target=\"_blank\" rel=\"noopener noreferrer\">\n<img decoding=\"async\" title=\"GitHub stars\" src=\"https:\/\/img.shields.io\/github\/stars\/dotkernel\/api?style=flat&amp;label=&amp;color=B9E3BB\">\n<\/a>\n<\/div>\n<\/div>\n\n<div class=\"right\">\n\t\n\t\t<div class=\"item\">\n\t\t<div class=\"text\"><b>Dotkernel API<\/b> is an alternative for legacy Laminas API Tools (formerly Apigility) applications. It's an <b>opinionated framework-less tool<\/b> aimed at intermediate-to-advanced level programmers to start implementing <b>REST APIs<\/b> swiftly and efficiently.<\/div>\n\t<\/div>\n\n\t<div class=\"item\">\n\t\t<div class=\"button button-red\">\n\t\t\t<a href=\"https:\/\/www.dotkernel.org\/\" target=\"_blank\">Read more<\/a>\n\t\t<\/div>\n\t<\/div>\n\n\t<div class=\"buttons buttons-api\">\n\t\t<a href=\"https:\/\/github.com\/dotkernel\/api\" target=\"_blank\">\n\t\t\t<div class=\"button button-black\">\n\t\t\t\t<img decoding=\"async\" title=\"GitHub stars\" src=\"https:\/\/www.dotkernel.com\/wp-content\/uploads\/2024\/05\/github-black.svg\">\n\t\t\t\t<div class=\"button-title\">Git<\/div>\n\t\t\t<\/div>\n\t\t<\/a>\n\t\t&nbsp;\n\t\t<a href=\"https:\/\/api.dotkernel.net\/\" target=\"_blank\"><div class=\"button\">Demo<\/div><\/a>\n\t\t&nbsp;\n\t\t<a href=\"https:\/\/docs.dotkernel.org\/api-documentation\/\" target=\"_blank\"><div class=\"button\">Guide<\/div><\/a>\n\t<\/div>\n\t\n<\/div>\n<\/div>\n<\/div>\t\t\t\t\n\n\t<div class=\"box admin\">\n<div class=\"title\"><span class=\"star\">*<\/span> ADMIN<\/div>\n<div class=\"item\">\n<div class=\"name\">PHP<\/div>\n<img decoding=\"async\" style=\"display: inline-block;\" title=\"PHP from Packagist (specify version)\" src=\"https:\/\/img.shields.io\/packagist\/dependency-v\/dotkernel\/admin\/php.svg?version=7.2.0&style=flat&label=&color=B6CFFF\">\n\n<\/div>\n<div class=\"item\">\n<div class=\"name\">Packagist<\/div>\n<img decoding=\"async\" style=\"display: inline-block;\" title=\"Packagist Version\" src=\"https:\/\/img.shields.io\/packagist\/v\/dotkernel\/admin?style=flat&amp;label=&amp;color=B6CFFF\">\n\n<\/div>\n<div class=\"item\">\n<div class=\"name\">License<\/div>\n<a style=\"display: inline-block;\" href=\"https:\/\/github.com\/dotkernel\/admin\/blob\/5.0\/LICENSE.md\" target=\"_blank\" rel=\"noopener noreferrer\">\n<img decoding=\"async\" title=\"GitHub License\" src=\"https:\/\/img.shields.io\/github\/license\/dotkernel\/admin?style=flat&amp;label=&amp;color=B6CFFF\">\n<\/a>\n\n<\/div>\n<div class=\"item\">\n<div class=\"name\">Issues<\/div>\n<a style=\"display: inline-block;\" href=\"https:\/\/github.com\/dotkernel\/admin\/issues\" target=\"_blank\" rel=\"noopener noreferrer\">\n<img decoding=\"async\" title=\"GitHub issues\" src=\"https:\/\/img.shields.io\/github\/issues\/dotkernel\/admin?style=flat&amp;label=&amp;color=B6CFFF\">\n<\/a>\n\n<\/div>\n<div class=\"item\">\n\n<img decoding=\"async\" title=\"GitHub stars\" src=\"https:\/\/www.dotkernel.com\/wp-content\/uploads\/2024\/05\/github-white.svg\">\n<div class=\"name-no-image\">Stars<\/div>\n<a style=\"display: inline-block;\" href=\"https:\/\/github.com\/dotkernel\/admin\/stargazers\" target=\"_blank\" rel=\"noopener noreferrer\">\n<img decoding=\"async\" title=\"GitHub stars\" src=\"https:\/\/img.shields.io\/github\/stars\/dotkernel\/admin?style=flat&amp;label=&amp;color=B6CFFF\">\n<\/a>\n\n<\/div>\n\n\t<div class=\"item\">\n\t\t<div class=\"text\"><b>Dotkernel Admin<\/b> is an application (skeleton) intended for quickly setting up an administration site for your platform. It's a fast and reliable way to <b>manage records<\/b> in your database with a simple <b>table-based<\/b> approach, and also to <b>build reports and graphs<\/b> to monitor your platform.<\/div>\n\t<\/div>\n\n\n<div class=\"buttons\">\n<a href=\"https:\/\/github.com\/dotkernel\/admin\" target=\"_blank\">\n<div class=\"button button-black\">\n\n<img decoding=\"async\" title=\"GitHub stars\" src=\"https:\/\/www.dotkernel.com\/wp-content\/uploads\/2024\/05\/github-black.svg\">\n<div class=\"button-title\">Git<\/div>\n<\/div><\/a>\n&nbsp;\n<a href=\"https:\/\/admin7.dotkernel.net\/\" target=\"_blank\"><div class=\"button\">Demo<\/div><\/a>\n&nbsp;\n<a href=\"https:\/\/docs.dotkernel.org\/admin\/\" target=\"_blank\"><div class=\"button\">Guide<\/div><\/a>\n\n<\/div>\n<\/div>\n\n<div class=\"box admin\">\n<div class=\"title\"><span class=\"star\">*<\/span> QUEUE<\/div>\n<div class=\"item\">\n<div class=\"name\">PHP<\/div>\n<img decoding=\"async\" style=\"display: inline-block;\" title=\"PHP from Packagist (specify version)\" src=\"https:\/\/img.shields.io\/packagist\/php-v\/dotkernel\/queue\/1.0.0?style=flat&amp;label=&amp;color=e0caf5\">\n\n<\/div>\n<div class=\"item\">\n<div class=\"name\">Packagist<\/div>\n<img decoding=\"async\" style=\"display: inline-block;\" title=\"Packagist Version\" src=\"https:\/\/img.shields.io\/packagist\/v\/dotkernel\/queue?style=flat&amp;label=&amp;color=e0caf5\">\n\n<\/div>\n<div class=\"item\">\n<div class=\"name\">License<\/div>\n<a style=\"display: inline-block;\" href=\"https:\/\/github.com\/dotkernel\/queue\/blob\/main\/LICENSE.md\" target=\"_blank\" rel=\"noopener noreferrer\">\n<img decoding=\"async\" title=\"GitHub License\" src=\"https:\/\/img.shields.io\/github\/license\/dotkernel\/queue?style=flat&amp;label=&amp;color=e0caf5\">\n<\/a>\n\n<\/div>\n<div class=\"item\">\n<div class=\"name\">Issues<\/div>\n<a style=\"display: inline-block;\" href=\"https:\/\/github.com\/dotkernel\/queue\/issues\" target=\"_blank\" rel=\"noopener noreferrer\">\n<img decoding=\"async\" title=\"GitHub issues\" src=\"https:\/\/img.shields.io\/github\/issues\/dotkernel\/queue?style=flat&amp;label=&amp;color=e0caf5\">\n<\/a>\n\n<\/div>\n<div class=\"item\">\n\n<img decoding=\"async\" title=\"GitHub stars\" src=\"https:\/\/www.dotkernel.com\/wp-content\/uploads\/2024\/05\/github-white.svg\">\n<div class=\"name-no-image\">Stars<\/div>\n<a style=\"display: inline-block;\" href=\"https:\/\/github.com\/dotkernel\/queue\/stargazers\" target=\"_blank\" rel=\"noopener noreferrer\">\n<img decoding=\"async\" title=\"GitHub stars\" src=\"https:\/\/img.shields.io\/github\/stars\/dotkernel\/queue?style=flat&amp;label=&amp;color=e0caf5\">\n<\/a>\n\n<\/div>\n\n\t<div class=\"item\">\n\t\t<div class=\"text\"><b>Dotkernel Queue<\/b> is a component based on <a href=\"https:\/\/github.com\/symfony\/messenger\" target=\"_blank\">Symfony Messenger<\/a> that is used to queue asynchronous tasks. <a href=\"https:\/\/github.com\/netglue\/laminas-messenger\">netglue\/laminas-messenger<\/a> is an adapter that integrates Symfony Messenger with the <a href=\"https:\/\/docs.laminas.dev\/laminas-servicemanager\/\">Laminas Service Manager<\/a> container for Mezzio\/Laminas applications.<\/div>\n\t<\/div>\n\n\n<div class=\"buttons\" style=\"width: 100%;display: block;\">\n<a href=\"https:\/\/github.com\/dotkernel\/queue\" target=\"_blank\" style=\"float: left;\">\n<div class=\"button button-black\">\n\n<img decoding=\"async\" title=\"GitHub stars\" src=\"https:\/\/www.dotkernel.com\/wp-content\/uploads\/2024\/05\/github-black.svg\">\n<div class=\"button-title\">Git<\/div>\n<\/div><\/a>\n<!-- &nbsp;\n\t<a href=\"https:\/\/api.dotkernel.net\/\" target=\"_blank\"><div class=\"button\">Demo<\/div><\/a>\n&nbsp; -->\n\t<a href=\"https:\/\/docs.dotkernel.org\/queue-documentation\/\" target=\"_blank\" style=\"float: right;\"><div class=\"button\">Guide<\/div><\/a>\n&nbsp;\n\n<\/div>\n<\/div>\n\t\n<\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-7f581a1 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"7f581a1\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-091c13b\" data-id=\"091c13b\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-99b98c7 frontend-versions elementor-widget elementor-widget-text-editor\" data-id=\"99b98c7\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"boxes\">\n\n<div class=\"box light\">\n<div class=\"title\"><span class=\"star\">*<\/span> LIGHT<\/div>\n<div class=\"item\">\n<div class=\"name\">PHP<\/div>\n<img decoding=\"async\" style=\"display: inline-block;\" title=\"PHP from Packagist (specify version)\" src=\"https:\/\/img.shields.io\/packagist\/php-v\/dotkernel\/light\/1.0.x-dev?style=flat&amp;label=&amp;color=ffc6cd\">\n\n<\/div>\n<div class=\"item\">\n<div class=\"name\">Packagist<\/div>\n<img decoding=\"async\" style=\"display: inline-block;\" title=\"Packagist Version\" src=\"https:\/\/img.shields.io\/packagist\/v\/dotkernel\/light?style=flat&amp;label=&amp;color=ffc6cd\">\n\n<\/div>\n<div class=\"item\">\n<div class=\"name\">License<\/div>\n<a style=\"display: inline-block;\" href=\"https:\/\/github.com\/dotkernel\/api\/blob\/5.0\/LICENSE.md\" target=\"_blank\" rel=\"noopener noreferrer\">\n<img decoding=\"async\" title=\"GitHub License\" src=\"https:\/\/img.shields.io\/github\/license\/dotkernel\/light?style=flat&amp;label=&amp;color=ffc6cd\">\n<\/a>\n\n<\/div>\n<div class=\"item\">\n<div class=\"name\">Issues<\/div>\n<a style=\"display: inline-block;\" href=\"https:\/\/github.com\/dotkernel\/api\/issues\" target=\"_blank\" rel=\"noopener noreferrer\">\n<img decoding=\"async\" title=\"GitHub issues\" src=\"https:\/\/img.shields.io\/github\/issues\/dotkernel\/light?style=flat&amp;label=&amp;color=ffc6cd\">\n<\/a>\n\n<\/div>\n<div class=\"item\">\n\n<img decoding=\"async\" title=\"GitHub stars\" src=\"https:\/\/www.dotkernel.com\/wp-content\/uploads\/2024\/05\/github-white.svg\">\n<div class=\"name-no-image\">Stars<\/div>\n<a style=\"display: inline-block;\" href=\"https:\/\/github.com\/dotkernel\/light\/stargazers\" target=\"_blank\" rel=\"noopener noreferrer\">\n<img decoding=\"async\" title=\"GitHub stars\" src=\"https:\/\/img.shields.io\/github\/stars\/dotkernel\/light?style=flat&amp;label=&amp;color=ffc6cd\">\n<\/a>\n\n<\/div>\n\n<div class=\"item\">\n\t\t<div class=\"text\"><b>Dotkernel Light<\/b> is a PSR-15 compliant application (skeleton) using Mezzio microframework and Laminas components. It was created for <b>learning purposes<\/b>. It&#8217;s a minimal project for a <b>simple website<\/b>, like a presentation site.<\/div>\n\t<\/div>\n\n<div class=\"buttons\">\n<a href=\"https:\/\/github.com\/dotkernel\/light\" target=\"_blank\">\n<div class=\"button button-black\">\n<img decoding=\"async\" title=\"GitHub stars\" src=\"https:\/\/www.dotkernel.com\/wp-content\/uploads\/2024\/05\/github-black.svg\">\n<div class=\"button-title\">Git<\/div>\n<\/div>\n<\/a>\n&nbsp;\n<a href=\"https:\/\/light.dotkernel.net\/\" target=\"_blank\">\n<div class=\"button\">Demo<\/div><\/a>\n&nbsp;\n<a href=\"https:\/\/docs.dotkernel.org\/light-documentation\/\" target=\"_blank\">\n<div class=\"button\">Guide<\/div><\/a>\n<\/div>\n<\/div>\n\n<div class=\"box frontend\">\n<div class=\"title\"><span class=\"star\">*<\/span> FRONTEND<\/div>\n<div class=\"item\">\n<div class=\"name\">PHP<\/div>\n<img decoding=\"async\" style=\"display: inline-block;\" title=\"PHP from Packagist (specify version)\" src=\"https:\/\/img.shields.io\/packagist\/php-v\/dotkernel\/frontend\/5.0.0?style=flat&amp;label=&amp;color=FFDCB3\">\n\n<\/div>\n<div class=\"item\">\n<div class=\"name\">Packagist<\/div>\n<img decoding=\"async\" style=\"display: inline-block;\" title=\"Packagist Version\" src=\"https:\/\/img.shields.io\/packagist\/v\/dotkernel\/frontend?style=flat&amp;label=&amp;color=FFDCB3\">\n\n<\/div>\n<div class=\"item\">\n<div class=\"name\">License<\/div>\n<a style=\"display: inline-block;\" href=\"https:\/\/github.com\/dotkernel\/frontend\/blob\/5.0\/LICENSE.md\" target=\"_blank\" rel=\"noopener noreferrer\">\n<img decoding=\"async\" title=\"GitHub License\" src=\"https:\/\/img.shields.io\/github\/license\/dotkernel\/frontend?style=flat&amp;label=&amp;color=FFDCB3\">\n<\/a>\n\n<\/div>\n<div class=\"item\">\n<div class=\"name\">Issues<\/div>\n<a style=\"display: inline-block;\" href=\"https:\/\/github.com\/dotkernel\/frontend\/issues\" target=\"_blank\" rel=\"noopener noreferrer\">\n<img decoding=\"async\" title=\"GitHub issues\" src=\"https:\/\/img.shields.io\/github\/issues\/dotkernel\/frontend?style=flat&amp;label=&amp;color=FFDCB3\">\n<\/a>\n\n<\/div>\n<div class=\"item\">\n\n<img decoding=\"async\" title=\"GitHub stars\" src=\"https:\/\/www.dotkernel.com\/wp-content\/uploads\/2024\/05\/github-white.svg\">\n<div class=\"name-no-image\">Stars<\/div>\n<a style=\"display: inline-block;\" href=\"https:\/\/github.com\/dotkernel\/frontend\/stargazers\" target=\"_blank\" rel=\"noopener noreferrer\">\n<img decoding=\"async\" title=\"GitHub stars\" src=\"https:\/\/img.shields.io\/github\/stars\/dotkernel\/frontend?style=flat&amp;label=&amp;color=FFDCB3\">\n<\/a>\n\n<\/div>\n\n<div class=\"item\">\n\t\t<div class=\"text\"><b>Dotkernel Frontend<\/b> is an application (skeleton) based on Mezzio microframework using Laminas components. It\u2019s designed as a web starter package suitable for <b>frontend applications<\/b>.<\/div>\n\t<\/div>\n\n<div class=\"buttons\">\n\n<a href=\"https:\/\/github.com\/dotkernel\/frontend\" target=\"_blank\">\n<div class=\"button button-black\">\n<img decoding=\"async\" title=\"GitHub stars\" src=\"https:\/\/www.dotkernel.com\/wp-content\/uploads\/2024\/05\/github-black.svg\">\n<div class=\"button-title\">Git<\/div>\n<\/div>\n<\/a>\n&nbsp;\n<a href=\"https:\/\/v5.dotkernel.net\/\" target=\"_blank\"><div class=\"button\">Demo<\/div><\/a>\n&nbsp;\n<a href=\"https:\/\/docs.dotkernel.org\/frontend\/\" target=\"_blank\"><div class=\"button\">Guide<\/div><\/a>\n<\/div>\n<\/div>\n\n\n<\/div>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-54e6b83 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"54e6b83\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-c8db8c1\" data-id=\"c8db8c1\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-568193b elementor-widget elementor-widget-spacer\" data-id=\"568193b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9488331 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"9488331\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-9da6318\" data-id=\"9da6318\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-94529b1 elementor-widget elementor-widget-spacer\" data-id=\"94529b1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-3585347 based-on elementor-section-content-space-between elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"3585347\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-33 elementor-top-column elementor-element elementor-element-97a5928\" data-id=\"97a5928\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-5cae520 elementor-widget elementor-widget-text-editor\" data-id=\"5cae520\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<a style=\"color: #ffffff;\" href=\"https:\/\/docs.mezzio.dev\/mezzio\/v3\/features\/container\/intro\/\" target=\"_blank\" rel=\"noopener\"><h5>Containers<\/h5><\/a>\nDotkernel is built around the PSR-11 dependency container. We have chosen <strong>Laminas Service Manager<\/strong> as our default implementation.\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-41dce95 elementor-widget elementor-widget-text-editor\" data-id=\"41dce95\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\tGet Started with\n<div>\n<a class=\"text-decoration-none\" href=\"https:\/\/github.com\/php-fig\/container\" target=\"_blank\" rel=\"noopener\">PSR-11<\/a>\nand\n<a class=\"text-decoration-none\" href=\"https:\/\/github.com\/laminas\/laminas-servicemanager\" target=\"_blank\" rel=\"noopener\">Laminas Service Manager<\/a>\n<\/div>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-33 elementor-top-column elementor-element elementor-element-1af5b4a\" data-id=\"1af5b4a\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-ea897f6 elementor-widget elementor-widget-text-editor\" data-id=\"ea897f6\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<a style=\"color: #ffffff;\" href=\"https:\/\/docs.mezzio.dev\/mezzio\/v3\/features\/template\/intro\/\" target=\"_blank\" rel=\"noopener\"><h5>Templating<\/h5><\/a>\nBy default, no middleware in Mezzio is templated. For Dotkernel\u2019s Frontend skeleton, we have chosen <strong>Twig<\/strong> as the default templating engine.\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-5816133 elementor-widget elementor-widget-text-editor\" data-id=\"5816133\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\tGet started with\n<div>\n<a class=\"text-decoration-none\" href=\"https:\/\/twig.symfony.com\/\" target=\"_blank\" rel=\"noopener\">Twig<\/a>\nand\n<a class=\"text-decoration-none\" href=\"https:\/\/github.com\/mezzio\/mezzio-twigrenderer\" target=\"_blank\" rel=\"noopener\">Mezzio TwigRenderer<\/a>\n<\/div>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-33 elementor-top-column elementor-element elementor-element-2881647\" data-id=\"2881647\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-dc3cbcd elementor-widget elementor-widget-text-editor\" data-id=\"dc3cbcd\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<a style=\"color: #ffffff;\" href=\"https:\/\/docs.mezzio.dev\/mezzio\/v3\/features\/router\/intro\/\" target=\"_blank\" rel=\"noopener\"><h5>Routers<\/h5><\/a>\nOf the many routing implementations compatible with Expressive, we have chosen <strong>FastRoute<\/strong> as Dotkernel\u2019s default routing library.\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ca46097 elementor-widget elementor-widget-text-editor\" data-id=\"ca46097\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\tGet started with \n<div>\n<a href=\"https:\/\/github.com\/nikic\/FastRoute\" target=\"_blank\" rel=\"noopener\">FastRoute<\/a>\n<\/div>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-606433d based-on elementor-section-content-space-between elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"606433d\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-33 elementor-top-column elementor-element elementor-element-e8c63aa\" data-id=\"e8c63aa\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-f625372 elementor-widget elementor-widget-text-editor\" data-id=\"f625372\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<a style=\"color: #ffffff;\" href=\"https:\/\/github.com\/laminas\/laminas-diactoros\" target=\"_blank\" rel=\"noopener\"><h5>HTTP messages<\/h5><\/a>\nMezzio, and consequently Dotkernel, is built around the PSR-7 standard. It uses <strong>Laminas Diactoros<\/strong> as the PSR-7 implementation.\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-5c751cb double-link elementor-widget elementor-widget-text-editor\" data-id=\"5c751cb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\tGet started with\n<div><a href=\"https:\/\/github.com\/php-fig\/http-message\" target=\"_blank\" rel=\"noopener\">PSR-7<\/a> and <a href=\"https:\/\/github.com\/laminas\/laminas-diactoros\" target=\"_blank\" rel=\"noopener\">Diactoros<\/a><\/div>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-33 elementor-top-column elementor-element elementor-element-18a2a3d\" data-id=\"18a2a3d\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b34079f elementor-widget elementor-widget-text-editor\" data-id=\"b34079f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<a style=\"color: #ffffff;\" href=\"https:\/\/github.com\/laminas\/laminas-httphandlerrunner\" target=\"_blank\" rel=\"noopener\"><h5>HTTP Request Handlers<\/h5><\/a>\nDotkernel follows the PSR-15 (HTTP Request Handlers) specifications, by implementing the laminas-httphandlerrunner package.\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-86abff3 double-link elementor-widget elementor-widget-text-editor\" data-id=\"86abff3\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\tGet started with\n<div><a href=\"https:\/\/github.com\/php-fig\/http-server-handler\" target=\"_blank\" rel=\"noopener\">PSR-15<\/a> and <a href=\"https:\/\/github.com\/laminas\/laminas-httphandlerrunner\" target=\"_blank\" rel=\"noopener\">Laminas HTTP Handler Runner<\/a><\/div>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-33 elementor-top-column elementor-element elementor-element-e9fe58b\" data-id=\"e9fe58b\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-03ada59 elementor-widget elementor-widget-text-editor\" data-id=\"03ada59\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<a style=\"color: #ffffff;\" href=\"https:\/\/www.doctrine-project.org\/projects\/doctrine-orm\/en\/current\/tutorials\/getting-started.html\" target=\"_blank\" rel=\"noopener\"><h5>Database and object mapping<\/h5><\/a>\nThe Doctrine Project&#8217;s PHP libraries with their flexible and stable features are at the core of our database storage and object mapping.\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-d94b593 double-link elementor-widget elementor-widget-text-editor\" data-id=\"d94b593\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\tGet started with\n<div><a href=\"https:\/\/www.doctrine-project.org\/projects\/orm.html\" target=\"_blank\" rel=\"noopener\">Doctrine Orm<\/a> and <a href=\"https:\/\/www.doctrine-project.org\/projects\/dbal.html\" target=\"_blank\" rel=\"noopener\">DBAL<\/a><\/div>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-d33dd4d elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"d33dd4d\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-16948db\" data-id=\"16948db\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-83f86ad elementor-widget elementor-widget-spacer\" data-id=\"83f86ad\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9f03322 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"9f03322\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-8dc723d\" data-id=\"8dc723d\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-f5dfab9 elementor-widget elementor-widget-heading\" data-id=\"f5dfab9\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h5 class=\"elementor-heading-title elementor-size-default\">Dotkernel<\/h5>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-ba70760 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"ba70760\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-b6f97b8\" data-id=\"b6f97b8\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-8041698 elementor-widget elementor-widget-heading\" data-id=\"8041698\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Components<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-91bfc04 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"91bfc04\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-884f50a\" data-id=\"884f50a\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-d44e1f6 elementor-widget elementor-widget-spacer\" data-id=\"d44e1f6\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-6b015ad elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"6b015ad\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-top-column elementor-element elementor-element-f108bcf\" data-id=\"f108bcf\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-8e27c2c elementor-widget elementor-widget-pp-advanced-accordion\" data-id=\"8e27c2c\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;accordion_type&quot;:&quot;accordion&quot;,&quot;toggle_speed&quot;:300}\" data-widget_type=\"pp-advanced-accordion.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"pp-advanced-accordion pp-toggle-icon-align-left\" id=\"pp-advanced-accordion-8e27c2c\" data-accordion-id=\"8e27c2c\" role=\"tablist\">\n\t\t\t\t\t\t\t<div class=\"pp-accordion-item\">\n\t\t\t\t\t\t\t\t\t\t<div id=\"pp-accordion-tab-title-1491\" class=\"pp-accordion-tab-title\" tabindex=\"0\" data-tab=\"1\" role=\"tab\" aria-controls=\"pp-accordion-tab-content-1491\" aria-expanded=\"false\">\n\t\t\t\t\t\t<span class=\"pp-accordion-title-icon\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"pp-accordion-title-text\">\n\t\t\t\t\t\t\t\tAuthentication\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"pp-accordion-toggle-icon\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class='pp-accordion-toggle-icon-close pp-icon'>\n\t\t\t\t\t\t\t\t\t\t<i aria-hidden=\"true\" class=\"fas fa-plus\"><\/i>\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class='pp-accordion-toggle-icon-open pp-icon'>\n\t\t\t\t\t\t\t\t\t\t<i aria-hidden=\"true\" class=\"fas fa-minus\"><\/i>\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\n\t\t\t\t\t<div id=\"pp-accordion-tab-content-1491\" class=\"pp-accordion-tab-content\" data-tab=\"1\" role=\"tabpanel\" aria-labelledby=\"pp-accordion-tab-title-1491\">\n\t\t\t\t\t\t<ul><li><a href=\"https:\/\/github.com\/dotkernel\/dot-authentication\" target=\"_blank\" rel=\"noopener\">dot-authentication<\/a><br \/><img decoding=\"async\" src=\"https:\/\/img.shields.io\/osslifecycle\/dotkernel\/dot-authentication\" alt=\"OSS Lifecycle\" \/><br \/>core authentication interfaces<\/li><li><a href=\"https:\/\/github.com\/dotkernel\/dot-auth-social\" target=\"_blank\" rel=\"noopener\">dot-auth-social<\/a><br \/><img decoding=\"async\" src=\"https:\/\/img.shields.io\/osslifecycle\/dotkernel\/dot-auth-social\" alt=\"OSS Lifecycle\" \/><br \/>wrapper for <a href=\"https:\/\/github.com\/thephpleague\/oauth2-client\" target=\"_blank\" rel=\"noopener\">thephpleague\/oauth2-client<\/a> to authenticate users though Facebook<\/li><\/ul>\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<div class=\"pp-accordion-item\">\n\t\t\t\t\t\t\t\t\t\t<div id=\"pp-accordion-tab-title-1492\" class=\"pp-accordion-tab-title\" tabindex=\"0\" data-tab=\"2\" role=\"tab\" aria-controls=\"pp-accordion-tab-content-1492\" aria-expanded=\"false\">\n\t\t\t\t\t\t<span class=\"pp-accordion-title-icon\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"pp-accordion-title-text\">\n\t\t\t\t\t\t\t\tAuthorization\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"pp-accordion-toggle-icon\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class='pp-accordion-toggle-icon-close pp-icon'>\n\t\t\t\t\t\t\t\t\t\t<i aria-hidden=\"true\" class=\"fas fa-plus\"><\/i>\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class='pp-accordion-toggle-icon-open pp-icon'>\n\t\t\t\t\t\t\t\t\t\t<i aria-hidden=\"true\" class=\"fas fa-minus\"><\/i>\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\n\t\t\t\t\t<div id=\"pp-accordion-tab-content-1492\" class=\"pp-accordion-tab-content\" data-tab=\"2\" role=\"tabpanel\" aria-labelledby=\"pp-accordion-tab-title-1492\">\n\t\t\t\t\t\t<ul><li><a href=\"https:\/\/github.com\/dotkernel\/dot-authorization\" target=\"_blank\" rel=\"noopener\">dot-authorization<\/a><br \/><img decoding=\"async\" src=\"https:\/\/img.shields.io\/osslifecycle\/dotkernel\/dot-authorization\" alt=\"OSS Lifecycle\" \/><br \/>core authorization interfaces<\/li><li><a href=\"https:\/\/github.com\/dotkernel\/dot-rbac\" target=\"_blank\" rel=\"noopener\">dot-rbac<\/a><br \/><img decoding=\"async\" src=\"https:\/\/img.shields.io\/osslifecycle\/dotkernel\/dot-rbac\" alt=\"OSS Lifecycle\" \/><br \/>RBAC authorization implementation<\/li><li><a href=\"https:\/\/github.com\/dotkernel\/dot-rbac-guard\" target=\"_blank\" rel=\"noopener\">dot-rbac-guard<\/a><br \/><img decoding=\"async\" src=\"https:\/\/img.shields.io\/osslifecycle\/dotkernel\/dot-rbac-guard\" alt=\"OSS Lifecycle\" \/><br \/>RBAC for authorizing sections of an application<\/li><\/ul>\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<div class=\"pp-accordion-item\">\n\t\t\t\t\t\t\t\t\t\t<div id=\"pp-accordion-tab-title-1493\" class=\"pp-accordion-tab-title\" tabindex=\"0\" data-tab=\"3\" role=\"tab\" aria-controls=\"pp-accordion-tab-content-1493\" aria-expanded=\"false\">\n\t\t\t\t\t\t<span class=\"pp-accordion-title-icon\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"pp-accordion-title-text\">\n\t\t\t\t\t\t\t\tControllers\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"pp-accordion-toggle-icon\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class='pp-accordion-toggle-icon-close pp-icon'>\n\t\t\t\t\t\t\t\t\t\t<i aria-hidden=\"true\" class=\"fas fa-plus\"><\/i>\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class='pp-accordion-toggle-icon-open pp-icon'>\n\t\t\t\t\t\t\t\t\t\t<i aria-hidden=\"true\" class=\"fas fa-minus\"><\/i>\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\n\t\t\t\t\t<div id=\"pp-accordion-tab-content-1493\" class=\"pp-accordion-tab-content\" data-tab=\"3\" role=\"tabpanel\" aria-labelledby=\"pp-accordion-tab-title-1493\">\n\t\t\t\t\t\t<ul><li><a href=\"https:\/\/github.com\/dotkernel\/dot-controller\" target=\"_blank\" rel=\"noopener\">dot-controller<\/a><br \/><img decoding=\"async\" src=\"https:\/\/img.shields.io\/osslifecycle\/dotkernel\/dot-controller\" alt=\"OSS Lifecycle\" \/><br \/>controller-like middleware for mezzio<\/li><\/ul>\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<div class=\"pp-accordion-item\">\n\t\t\t\t\t\t\t\t\t\t<div id=\"pp-accordion-tab-title-1494\" class=\"pp-accordion-tab-title\" tabindex=\"0\" data-tab=\"4\" role=\"tab\" aria-controls=\"pp-accordion-tab-content-1494\" aria-expanded=\"false\">\n\t\t\t\t\t\t<span class=\"pp-accordion-title-icon\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"pp-accordion-title-text\">\n\t\t\t\t\t\t\t\tForms\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"pp-accordion-toggle-icon\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class='pp-accordion-toggle-icon-close pp-icon'>\n\t\t\t\t\t\t\t\t\t\t<i aria-hidden=\"true\" class=\"fas fa-plus\"><\/i>\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class='pp-accordion-toggle-icon-open pp-icon'>\n\t\t\t\t\t\t\t\t\t\t<i aria-hidden=\"true\" class=\"fas fa-minus\"><\/i>\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\n\t\t\t\t\t<div id=\"pp-accordion-tab-content-1494\" class=\"pp-accordion-tab-content\" data-tab=\"4\" role=\"tabpanel\" aria-labelledby=\"pp-accordion-tab-title-1494\">\n\t\t\t\t\t\t<ul><li><a href=\"https:\/\/github.com\/laminas\/laminas-form\" target=\"_blank\" rel=\"noopener\"><br \/>laminas-form<\/a><br \/>validate and display forms<\/li><\/ul>\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<div class=\"pp-accordion-item\">\n\t\t\t\t\t\t\t\t\t\t<div id=\"pp-accordion-tab-title-1495\" class=\"pp-accordion-tab-title\" tabindex=\"0\" data-tab=\"5\" role=\"tab\" aria-controls=\"pp-accordion-tab-content-1495\" aria-expanded=\"false\">\n\t\t\t\t\t\t<span class=\"pp-accordion-title-icon\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"pp-accordion-title-text\">\n\t\t\t\t\t\t\t\tSession\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"pp-accordion-toggle-icon\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class='pp-accordion-toggle-icon-close pp-icon'>\n\t\t\t\t\t\t\t\t\t\t<i aria-hidden=\"true\" class=\"fas fa-plus\"><\/i>\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class='pp-accordion-toggle-icon-open pp-icon'>\n\t\t\t\t\t\t\t\t\t\t<i aria-hidden=\"true\" class=\"fas fa-minus\"><\/i>\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\n\t\t\t\t\t<div id=\"pp-accordion-tab-content-1495\" class=\"pp-accordion-tab-content\" data-tab=\"5\" role=\"tabpanel\" aria-labelledby=\"pp-accordion-tab-title-1495\">\n\t\t\t\t\t\t<ul><li><a href=\"https:\/\/github.com\/dotkernel\/dot-session\" target=\"_blank\" rel=\"noopener\">dot-session<\/a><br \/><img decoding=\"async\" src=\"https:\/\/img.shields.io\/osslifecycle\/dotkernel\/dot-session\" alt=\"OSS Lifecycle\" \/><br \/>extends <a href=\"https:\/\/docs.laminas.dev\/laminas-session\/\" target=\"_blank\" rel=\"noopener\">laminas-session<\/a><\/li><li><a href=\"https:\/\/github.com\/dotkernel\/dot-flashmessenger\" target=\"_blank\" rel=\"noopener\">dot-flashmessenger<\/a><br \/><img decoding=\"async\" src=\"https:\/\/img.shields.io\/osslifecycle\/dotkernel\/dot-flashmessenger\" alt=\"OSS Lifecycle\" \/><br \/>short lived session messages<\/li><li><a href=\"https:\/\/github.com\/dotkernel\/dot-cache\" target=\"_blank\" rel=\"noopener\">dot-cache<\/a><br \/><img decoding=\"async\" src=\"https:\/\/img.shields.io\/osslifecycle\/dotkernel\/dot-cache\" alt=\"OSS Lifecycle\" \/><br \/>extends <a href=\"https:\/\/github.com\/symfony\/cache\" target=\"_blank\" rel=\"noopener\">symfony\/cache<\/a><\/li><\/ul>\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<div class=\"pp-accordion-item\">\n\t\t\t\t\t\t\t\t\t\t<div id=\"pp-accordion-tab-title-1496\" class=\"pp-accordion-tab-title\" tabindex=\"0\" data-tab=\"6\" role=\"tab\" aria-controls=\"pp-accordion-tab-content-1496\" aria-expanded=\"false\">\n\t\t\t\t\t\t<span class=\"pp-accordion-title-icon\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"pp-accordion-title-text\">\n\t\t\t\t\t\t\t\tLogging and error handling\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"pp-accordion-toggle-icon\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class='pp-accordion-toggle-icon-close pp-icon'>\n\t\t\t\t\t\t\t\t\t\t<i aria-hidden=\"true\" class=\"fas fa-plus\"><\/i>\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class='pp-accordion-toggle-icon-open pp-icon'>\n\t\t\t\t\t\t\t\t\t\t<i aria-hidden=\"true\" class=\"fas fa-minus\"><\/i>\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\n\t\t\t\t\t<div id=\"pp-accordion-tab-content-1496\" class=\"pp-accordion-tab-content\" data-tab=\"6\" role=\"tabpanel\" aria-labelledby=\"pp-accordion-tab-title-1496\">\n\t\t\t\t\t\t<ul>\n<li><a href=\"https:\/\/github.com\/dotkernel\/dot-log\" target=\"_blank\" rel=\"noopener\">dot-log<\/a><br><img decoding=\"async\" src=\"https:\/\/img.shields.io\/osslifecycle\/dotkernel\/dot-log\" alt=\"OSS Lifecycle\"><\/li>\n<li><a href=\"https:\/\/github.com\/dotkernel\/dot-errorhandler\" target=\"_blank\" rel=\"noopener\">dot-errorhandler<\/a><br><img decoding=\"async\" src=\"https:\/\/img.shields.io\/osslifecycle\/dotkernel\/dot-errorhandler\" alt=\"OSS Lifecycle\"><\/li>\n<\/ul>\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-top-column elementor-element elementor-element-fef4aed\" data-id=\"fef4aed\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-d3b6af3 elementor-widget elementor-widget-pp-advanced-accordion\" data-id=\"d3b6af3\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;accordion_type&quot;:&quot;accordion&quot;,&quot;toggle_speed&quot;:300}\" data-widget_type=\"pp-advanced-accordion.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"pp-advanced-accordion pp-toggle-icon-align-left\" id=\"pp-advanced-accordion-d3b6af3\" data-accordion-id=\"d3b6af3\" role=\"tablist\">\n\t\t\t\t\t\t\t<div class=\"pp-accordion-item\">\n\t\t\t\t\t\t\t\t\t\t<div id=\"pp-accordion-tab-title-2211\" class=\"pp-accordion-tab-title\" tabindex=\"0\" data-tab=\"1\" role=\"tab\" aria-controls=\"pp-accordion-tab-content-2211\" aria-expanded=\"false\">\n\t\t\t\t\t\t<span class=\"pp-accordion-title-icon\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"pp-accordion-title-text\">\n\t\t\t\t\t\t\t\tEmailing\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"pp-accordion-toggle-icon\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class='pp-accordion-toggle-icon-close pp-icon'>\n\t\t\t\t\t\t\t\t\t\t<i aria-hidden=\"true\" class=\"fas fa-plus\"><\/i>\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class='pp-accordion-toggle-icon-open pp-icon'>\n\t\t\t\t\t\t\t\t\t\t<i aria-hidden=\"true\" class=\"fas fa-minus\"><\/i>\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\n\t\t\t\t\t<div id=\"pp-accordion-tab-content-2211\" class=\"pp-accordion-tab-content\" data-tab=\"1\" role=\"tabpanel\" aria-labelledby=\"pp-accordion-tab-title-2211\">\n\t\t\t\t\t\t<ul>\n \t<li><a href=\"https:\/\/github.com\/dotkernel\/dot-mail\" target=\"_blank\" rel=\"noopener\">dot-mail<\/a>\n<img decoding=\"async\" src=\"https:\/\/img.shields.io\/osslifecycle\/dotkernel\/dot-mail\" alt=\"OSS Lifecycle\" \/>\nextends <a href=\"https:\/\/symfony.com\/doc\/current\/mailer.html\" target=\"_blank\" rel=\"noopener\">symfony\/mailer<\/a><\/li>\n<\/ul>\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<div class=\"pp-accordion-item\">\n\t\t\t\t\t\t\t\t\t\t<div id=\"pp-accordion-tab-title-2212\" class=\"pp-accordion-tab-title\" tabindex=\"0\" data-tab=\"2\" role=\"tab\" aria-controls=\"pp-accordion-tab-content-2212\" aria-expanded=\"false\">\n\t\t\t\t\t\t<span class=\"pp-accordion-title-icon\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"pp-accordion-title-text\">\n\t\t\t\t\t\t\t\tBackend abstraction (database)\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"pp-accordion-toggle-icon\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class='pp-accordion-toggle-icon-close pp-icon'>\n\t\t\t\t\t\t\t\t\t\t<i aria-hidden=\"true\" class=\"fas fa-plus\"><\/i>\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class='pp-accordion-toggle-icon-open pp-icon'>\n\t\t\t\t\t\t\t\t\t\t<i aria-hidden=\"true\" class=\"fas fa-minus\"><\/i>\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\n\t\t\t\t\t<div id=\"pp-accordion-tab-content-2212\" class=\"pp-accordion-tab-content\" data-tab=\"2\" role=\"tabpanel\" aria-labelledby=\"pp-accordion-tab-title-2212\">\n\t\t\t\t\t\t<ul>\n \t<li><a href=\"https:\/\/github.com\/doctrine\/orm\/\" target=\"_blank\" rel=\"noopener\">doctrine\/orm<\/a><br>\nobject-relational-mapper for PHP<\/li>\n \t<li><a href=\"https:\/\/github.com\/doctrine\/dbal\/\" target=\"_blank\" rel=\"noopener\">doctrine\/dbal<\/a><br>\ndatabase abstraction layer with features for database schema introspection and management<\/li>\n \t<li><a href=\"https:\/\/github.com\/dotkernel\/dot-data-fixtures\" target=\"_blank\" rel=\"noopener\">dot-data-fixtures<\/a><br>\n<img decoding=\"async\" src=\"https:\/\/img.shields.io\/osslifecycle\/dotkernel\/dot-data-fixtures\" alt=\"OSS Lifecycle\" \/><br>\nextends <a href=\"https:\/\/github.com\/doctrine\/data-fixtures\" target=\"_blank\" rel=\"noopener\">doctrine\/data-fixtures<\/a> to populate tables<\/li>\n<\/ul>\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<div class=\"pp-accordion-item\">\n\t\t\t\t\t\t\t\t\t\t<div id=\"pp-accordion-tab-title-2213\" class=\"pp-accordion-tab-title\" tabindex=\"0\" data-tab=\"3\" role=\"tab\" aria-controls=\"pp-accordion-tab-content-2213\" aria-expanded=\"false\">\n\t\t\t\t\t\t<span class=\"pp-accordion-title-icon\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"pp-accordion-title-text\">\n\t\t\t\t\t\t\t\tNavigation\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"pp-accordion-toggle-icon\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class='pp-accordion-toggle-icon-close pp-icon'>\n\t\t\t\t\t\t\t\t\t\t<i aria-hidden=\"true\" class=\"fas fa-plus\"><\/i>\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class='pp-accordion-toggle-icon-open pp-icon'>\n\t\t\t\t\t\t\t\t\t\t<i aria-hidden=\"true\" class=\"fas fa-minus\"><\/i>\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\n\t\t\t\t\t<div id=\"pp-accordion-tab-content-2213\" class=\"pp-accordion-tab-content\" data-tab=\"3\" role=\"tabpanel\" aria-labelledby=\"pp-accordion-tab-title-2213\">\n\t\t\t\t\t\t<ul>\n \t<li><a href=\"https:\/\/github.com\/dotkernel\/dot-navigation\" target=\"_blank\" rel=\"noopener\">dot-navigation<\/a><br><img decoding=\"async\" src=\"https:\/\/img.shields.io\/osslifecycle\/dotkernel\/dot-navigation\" alt=\"OSS Lifecycle\"><br>easy menu configuration and parsing<\/li>\n<\/ul>\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<div class=\"pp-accordion-item\">\n\t\t\t\t\t\t\t\t\t\t<div id=\"pp-accordion-tab-title-2214\" class=\"pp-accordion-tab-title\" tabindex=\"0\" data-tab=\"4\" role=\"tab\" aria-controls=\"pp-accordion-tab-content-2214\" aria-expanded=\"false\">\n\t\t\t\t\t\t<span class=\"pp-accordion-title-icon\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"pp-accordion-title-text\">\n\t\t\t\t\t\t\t\tTemplate engine\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"pp-accordion-toggle-icon\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class='pp-accordion-toggle-icon-close pp-icon'>\n\t\t\t\t\t\t\t\t\t\t<i aria-hidden=\"true\" class=\"fas fa-plus\"><\/i>\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class='pp-accordion-toggle-icon-open pp-icon'>\n\t\t\t\t\t\t\t\t\t\t<i aria-hidden=\"true\" class=\"fas fa-minus\"><\/i>\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\n\t\t\t\t\t<div id=\"pp-accordion-tab-content-2214\" class=\"pp-accordion-tab-content\" data-tab=\"4\" role=\"tabpanel\" aria-labelledby=\"pp-accordion-tab-title-2214\">\n\t\t\t\t\t\t<ul>\n \t<li><a href=\"https:\/\/github.com\/dotkernel\/dot-twigrenderer\" target=\"_blank\" rel=\"noopener\">dot-twigrenderer<\/a><br>\n<img decoding=\"async\" src=\"https:\/\/img.shields.io\/osslifecycle\/dotkernel\/dot-twigrenderer\" alt=\"OSS Lifecycle\" \/><br>\nextend the twig renderer with useful extensions and laminas-view helpers<\/li>\n<\/ul>\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<div class=\"pp-accordion-item\">\n\t\t\t\t\t\t\t\t\t\t<div id=\"pp-accordion-tab-title-2215\" class=\"pp-accordion-tab-title\" tabindex=\"0\" data-tab=\"5\" role=\"tab\" aria-controls=\"pp-accordion-tab-content-2215\" aria-expanded=\"false\">\n\t\t\t\t\t\t<span class=\"pp-accordion-title-icon\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"pp-accordion-title-text\">\n\t\t\t\t\t\t\t\tTools\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"pp-accordion-toggle-icon\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class='pp-accordion-toggle-icon-close pp-icon'>\n\t\t\t\t\t\t\t\t\t\t<i aria-hidden=\"true\" class=\"fas fa-plus\"><\/i>\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class='pp-accordion-toggle-icon-open pp-icon'>\n\t\t\t\t\t\t\t\t\t\t<i aria-hidden=\"true\" class=\"fas fa-minus\"><\/i>\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\n\t\t\t\t\t<div id=\"pp-accordion-tab-content-2215\" class=\"pp-accordion-tab-content\" data-tab=\"5\" role=\"tabpanel\" aria-labelledby=\"pp-accordion-tab-title-2215\">\n\t\t\t\t\t\t<ul>\n \t<li><a href=\"https:\/\/github.com\/dotkernel\/dot-annotated-services\" target=\"_blank\" rel=\"noopener\">dot-annotated-services<\/a><br>\n<img decoding=\"async\" src=\"https:\/\/img.shields.io\/osslifecycle\/dotkernel\/dot-annotated-services\" alt=\"OSS Lifecycle\" \/><br>\ncreate and inject services with dependecies through annotations<\/li>\n \t<li><a href=\"https:\/\/github.com\/dotkernel\/dot-event\" target=\"_blank\" rel=\"noopener\">dot-event<\/a><br>\n<img decoding=\"async\" src=\"https:\/\/img.shields.io\/osslifecycle\/dotkernel\/dot-event\" alt=\"OSS Lifecycle\" \/><br>\nextends <a href=\"https:\/\/docs.laminas.dev\/laminas-eventmanager\/\" target=\"_blank\" rel=\"noopener\">laminas-eventmanager<\/a><\/li>\n \t<li><a href=\"https:\/\/github.com\/dotkernel\/dot-helpers\" target=\"_blank\" rel=\"noopener\">dot-helpers<\/a><br>\n<img decoding=\"async\" src=\"https:\/\/img.shields.io\/osslifecycle\/dotkernel\/dot-helpers\" alt=\"OSS Lifecycle\" \/><\/li>\n \t<li><a href=\"https:\/\/github.com\/dotkernel\/dot-cli\" target=\"_blank\" rel=\"noopener\">dot-cli<\/a><br>\n<img decoding=\"async\" src=\"https:\/\/img.shields.io\/osslifecycle\/dotkernel\/dot-cli\" alt=\"OSS Lifecycle\" \/><br>\nextends <a href=\"https:\/\/github.com\/laminas\/laminas-cli\" target=\"_blank\" rel=\"noopener\">laminas-cli<\/a> for building console applications<\/li>\n \t<li><a href=\"https:\/\/github.com\/dotkernel\/dot-doctrine-metadata\" target=\"_blank\" rel=\"noopener\">dot-doctrine-metadata<\/a><br>\n<img decoding=\"async\" src=\"https:\/\/img.shields.io\/osslifecycle\/dotkernel\/dot-doctrine-metadata\" alt=\"OSS Lifecycle\" \/><br>\nextends <a href=\"https:\/\/github.com\/mezzio\/mezzio-hal\" target=\"_blank\" rel=\"noopener\">mezzio\/mezzio-hal<\/a> for extracting and rendering Doctrine entities<\/li>\n \t<li><a href=\"https:\/\/github.com\/dotkernel\/dot-response-header\" target=\"_blank\" rel=\"noopener\">dot-response-header<\/a><br>\n<img decoding=\"async\" src=\"https:\/\/img.shields.io\/osslifecycle\/dotkernel\/dot-response-header\" alt=\"OSS Lifecycle\" \/><br>\nmiddleware for setting and overwriting custom response headers<\/li>\n<\/ul>\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<div class=\"pp-accordion-item\">\n\t\t\t\t\t\t\t\t\t\t<div id=\"pp-accordion-tab-title-2216\" class=\"pp-accordion-tab-title\" tabindex=\"0\" data-tab=\"6\" role=\"tab\" aria-controls=\"pp-accordion-tab-content-2216\" aria-expanded=\"false\">\n\t\t\t\t\t\t<span class=\"pp-accordion-title-icon\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"pp-accordion-title-text\">\n\t\t\t\t\t\t\t\tExtra libraries\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"pp-accordion-toggle-icon\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class='pp-accordion-toggle-icon-close pp-icon'>\n\t\t\t\t\t\t\t\t\t\t<i aria-hidden=\"true\" class=\"fas fa-plus\"><\/i>\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class='pp-accordion-toggle-icon-open pp-icon'>\n\t\t\t\t\t\t\t\t\t\t<i aria-hidden=\"true\" class=\"fas fa-minus\"><\/i>\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\n\t\t\t\t\t<div id=\"pp-accordion-tab-content-2216\" class=\"pp-accordion-tab-content\" data-tab=\"6\" role=\"tabpanel\" aria-labelledby=\"pp-accordion-tab-title-2216\">\n\t\t\t\t\t\t<ul>\n \t<li><a href=\"https:\/\/github.com\/dotkernel\/dot-user-agent-sniffer\" target=\"_blank\" rel=\"noopener\">dot-user-agent-sniffer<\/a><br>\n<img decoding=\"async\" src=\"https:\/\/img.shields.io\/osslifecycle\/dotkernel\/dot-user-agent-sniffer\" alt=\"OSS Lifecycle\" \/><br>\nprovides details about a device by parsing a user agent<\/li>\n \t<li><a href=\"https:\/\/github.com\/dotkernel\/dot-debugbar\" target=\"_blank\" rel=\"noopener\">dot-debugbar<\/a><br>\n<img decoding=\"async\" src=\"https:\/\/img.shields.io\/osslifecycle\/dotkernel\/dot-debugbar\" alt=\"OSS Lifecycle\" \/><br>\nextends <a href=\"https:\/\/github.com\/maximebf\/php-debugbar\" target=\"_blank\" rel=\"noopener\">maximebf\/php-debugbar<\/a> to collect session data, log messages, debug database queries etc.<\/li>\n \t<li><a href=\"https:\/\/github.com\/dotkernel\/dot-geoip\" target=\"_blank\" rel=\"noopener\">dot-geoip<\/a><br>\n<img decoding=\"async\" src=\"https:\/\/img.shields.io\/osslifecycle\/dotkernel\/dot-geoip\" alt=\"OSS Lifecycle\" \/><br>\nextends <a href=\"https:\/\/github.com\/maxmind\/GeoIP2-php\" target=\"_blank\" rel=\"noopener\">maxmind\/GeoIP2-php<\/a> to provide geographical details about an IP address<\/li>\n<\/ul>\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-a975489 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"a975489\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-738ca19\" data-id=\"738ca19\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap\">\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-b5c30f6 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"b5c30f6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-512667a\" data-id=\"512667a\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-0d5a137 elementor-widget elementor-widget-heading\" data-id=\"0d5a137\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h5 class=\"elementor-heading-title elementor-size-default\">Blog posts<\/h5>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-ead993d elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"ead993d\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-cd6eac9\" data-id=\"cd6eac9\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-506d6ea elementor-widget elementor-widget-heading\" data-id=\"506d6ea\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Useful reads<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-840073c elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"840073c\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-f230d5a\" data-id=\"f230d5a\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-8821b81 elementor-widget elementor-widget-spacer\" data-id=\"8821b81\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-b4dffe7 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"b4dffe7\" data-element_type=\"section\" data-e-type=\"section\" id=\"recent-posts\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-43d2df5\" data-id=\"43d2df5\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-d8b718b elementor-widget elementor-widget-wp-widget-recent-posts-widget-with-thumbnails\" data-id=\"d8b718b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"wp-widget-recent-posts-widget-with-thumbnails.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n<div id=\"rpwwt-wp-widget-recent-posts-widget-with-thumbnails\" class=\"rpwwt-widget\">\r\n\t<ul>\r\n\t\t<li><a href=\"https:\/\/www.dotkernel.com\/headless-platform\/implementing-time-based-one-time-password-totp-in-dotkernel\/\"><span class=\"rpwwt-post-title\">Implementing Time-based One-Time Password (TOTP) in Dotkernel<\/span><\/a><div class=\"rpwwt-post-date\">April 3, 2026<\/div><div class=\"rpwwt-post-excerpt\">What TOTP Does A Time-based One-Time Password (TOTP) is a security algorithm used as part of <span class=\"rpwwt-post-excerpt-more\"> [\u2026]<\/span><\/div><\/li>\r\n\t\t<li><a href=\"https:\/\/www.dotkernel.com\/dotkernel-api\/api-client-migration-from-postman-to-bruno\/\"><span class=\"rpwwt-post-title\">API Client Migration: From Postman to Bruno<\/span><\/a><div class=\"rpwwt-post-date\">March 25, 2026<\/div><div class=\"rpwwt-post-excerpt\">Why We Switched to the Offline-Focused Bruno Every API developer knows that to build an API <span class=\"rpwwt-post-excerpt-more\"> [\u2026]<\/span><\/div><\/li>\r\n\t\t<li><a href=\"https:\/\/www.dotkernel.com\/headless-platform\/version-7-adds-postgresql-native-uuid-and-php-8-5\/\"><span class=\"rpwwt-post-title\">Version 7 adds PostgreSQL, Native UUID and PHP 8.5<\/span><\/a><div class=\"rpwwt-post-date\">December 12, 2025<\/div><div class=\"rpwwt-post-excerpt\">The Dotkernel Headless Platform has seen new releases for both API and Admin. The Admin codebase <span class=\"rpwwt-post-excerpt-more\"> [\u2026]<\/span><\/div><\/li>\r\n\t<\/ul>\r\n<\/div><!-- .rpwwt-widget -->\r\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-e1c1005 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"e1c1005\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-c14ee96\" data-id=\"c14ee96\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4b8be4d elementor-widget elementor-widget-spacer\" data-id=\"4b8be4d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-1c96d60 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"1c96d60\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-7976dbc\" data-id=\"7976dbc\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-495be16 elementor-widget elementor-widget-heading\" data-id=\"495be16\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h5 class=\"elementor-heading-title elementor-size-default\">Designed and built by Apidemia<\/h5>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-7cf3f34 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"7cf3f34\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-b08e3c7\" data-id=\"b08e3c7\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-956861e elementor-widget__width-inherit elementor-widget elementor-widget-heading\" data-id=\"956861e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">Control, Scalability &amp; Performance<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-5e775a6 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"5e775a6\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-585161c\" data-id=\"585161c\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-6352b96 elementor-widget elementor-widget-text-editor\" data-id=\"6352b96\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Dotkernel is an Open Source project created and led by the dev team @Apidemia, initially as an internal tool to handle complex architectures, now freely open, our way of giving back to the community.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-f0664cd elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"f0664cd\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-custom\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-2afb94f\" data-id=\"2afb94f\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b5c214f elementor-align-center elementor-widget elementor-widget-button\" data-id=\"b5c214f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/www.dotkernel.com\/contact\/\" id=\"about-us-btn\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">See more about us<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Dotkernel is a Headless Platformfor building modern web applications Dotkernel is a collection of applications (skeletons) that use a middleware-first architecture built on top of the Mezzio microframework using Laminas components. The goal is to provide a pre-configured environment for &hellip; <a href=\"https:\/\/www.dotkernel.com\/headless-platform\/version-7-adds-postgresql-native-uuid-and-php-8-5\/\">Read More<\/a><\/p>\n","protected":false},"author":1313,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-132","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.dotkernel.com\/wp-json\/wp\/v2\/pages\/132","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dotkernel.com\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.dotkernel.com\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.dotkernel.com\/wp-json\/wp\/v2\/users\/1313"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dotkernel.com\/wp-json\/wp\/v2\/comments?post=132"}],"version-history":[{"count":1081,"href":"https:\/\/www.dotkernel.com\/wp-json\/wp\/v2\/pages\/132\/revisions"}],"predecessor-version":[{"id":8653,"href":"https:\/\/www.dotkernel.com\/wp-json\/wp\/v2\/pages\/132\/revisions\/8653"}],"wp:attachment":[{"href":"https:\/\/www.dotkernel.com\/wp-json\/wp\/v2\/media?parent=132"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}