From e856c621a165c837e0c912a0937213a934afab8f Mon Sep 17 00:00:00 2001 From: bidi Date: Tue, 18 Aug 2026 14:45:30 +0300 Subject: [PATCH] updated index, product pages Signed-off-by: bidi --- public/llms-full.txt | 4 +- src/App/templates/app/index.html.twig | 77 ++--------- src/App/templates/layout/default.html.twig | 8 +- src/Page/templates/page/admin.html.twig | 128 +++++++++--------- src/Page/templates/page/api.html.twig | 50 ++----- .../templates/page/architecture.html.twig | 16 ++- src/Page/templates/page/dotboost.html.twig | 42 ++---- src/Page/templates/page/frontend.html.twig | 20 --- src/Page/templates/page/light.html.twig | 91 ++++++------- src/Page/templates/page/queue.html.twig | 115 ++++++++++------ 10 files changed, 232 insertions(+), 319 deletions(-) diff --git a/public/llms-full.txt b/public/llms-full.txt index 21ef92f4..a906b71e 100644 --- a/public/llms-full.txt +++ b/public/llms-full.txt @@ -10307,7 +10307,7 @@ language: "en" ## TL;DR -Dotkernel API v7 adds support for native UUID v7, PostgreSQL, PHP 8.5 (8.4 for Admin), database table prefixes, and improved database configuration, while replacing the `binary` data type for `id` columns with `uuid`. +Dotkernel API v7 adds support for native UUID v7, PostgreSQL, PHP 8.5, database table prefixes, and improved database configuration, while replacing the `binary` data type for `id` columns with `uuid`. It drops the Evolution pattern's Method Deprecation support and MySQL, since MySQL doesn't support the UUID data type. UUIDs are generated with the ramsey/uuid package, previously `uuid`-named table columns are now called `id`, and PostgreSQL or MariaDB v10.7+ is required for UUID support. @@ -10319,7 +10319,7 @@ New features are: - Support for `UUID` v7 using the native `UUID` data type. - Support for PostgreSQL. -- Support for PHP 8.5 for API and 8.4 for Admin. +- Support for PHP 8.5. - Support for database table prefix (string prepended to the name of every table in a database). - Improved database configuration. - The replacement of the `binary` data type for `id` (index) columns, in favor of `uuid`. diff --git a/src/App/templates/app/index.html.twig b/src/App/templates/app/index.html.twig index b04fc182..97f2dcc4 100644 --- a/src/App/templates/app/index.html.twig +++ b/src/App/templates/app/index.html.twig @@ -2,22 +2,6 @@ {% block json_ld %} {{ include('@jsonld/index.jsonld.twig') }} {% endblock %} {% block title %}A PSR-15 compliant application{% endblock %} -{% block stylesheets %} - -{% endblock %} - {% block content %}
@@ -45,58 +29,15 @@
-
Three products, one core
- - - - - - - - - Admin - - - Queue - - - API - - - - - - - Mobile - - - - - - - - Client - - - - - - - Users - - - - - - Cloud - - - - - - - - +
Request lifecycle
+
+ +
RouterFastRoute
+
Authenticationdot-authentication
+
RBAC guarddot-rbac-guard
+
Your handlerPSR-15
+
ResponseDiactoros
+
diff --git a/src/App/templates/layout/default.html.twig b/src/App/templates/layout/default.html.twig index e8397b57..2e0d060d 100644 --- a/src/App/templates/layout/default.html.twig +++ b/src/App/templates/layout/default.html.twig @@ -91,20 +91,20 @@ -
- Shared domain layer - Core\Admin Core\App Core\Security - Core\Setting Core\User -

The Core module is a common codebase shared with the other applications in your project. Each - submodule holds its entities, repositories and its own ConfigProvider, so a user means the same - thing to the admin screen and to the API endpoint.

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

The Core module is a common codebase shared with the other applications in your project. Each + submodule holds its entities, repositories and its own ConfigProvider, so a user means the same + thing to the admin screen and to the API endpoint.

+
diff --git a/src/Page/templates/page/api.html.twig b/src/Page/templates/page/api.html.twig index d52ebbe0..ad2c6115 100644 --- a/src/Page/templates/page/api.html.twig +++ b/src/Page/templates/page/api.html.twig @@ -169,36 +169,6 @@
-
-
-
One resource, its links
- - - - - - - - - - - - - - - - - - - - - - - - - -
-
@@ -410,7 +380,7 @@

PHP 8.5

-

The API targets PHP 8.5, with Dotkernel Admin on 8.4. Dependencies are kept current, and the +

The API and Admin target PHP 8.5. Dependencies are kept current, and the ecosystem's own packages track the versions Laminas and Doctrine support.

@@ -521,13 +491,17 @@ ecosystem is below.

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

One set of entities and repositories, committed in each repository so a single-component start just - works. Having many entities in Core does not oblige you to implement handlers for all of them - - each application handles only what it needs.

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

One set of entities and repositories, committed in each repository so a single-component start just + works. Having many entities in Core does not oblige you to implement handlers for all of them - + each application handles only what it needs.

+
diff --git a/src/Page/templates/page/architecture.html.twig b/src/Page/templates/page/architecture.html.twig index 9b7fb806..01adbd92 100644 --- a/src/Page/templates/page/architecture.html.twig +++ b/src/Page/templates/page/architecture.html.twig @@ -580,12 +580,16 @@ the same Core namespaces underneath.

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

Kept as its own Git repository and added as a submodule, so an entity means the same thing to the - endpoint that creates it, the admin screen that moderates it and the worker that emails it.

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

Kept as its own Git repository and added as a submodule, so an entity means the same thing to the + endpoint that creates it, the admin screen that moderates it and the worker that emails it.

+
diff --git a/src/Page/templates/page/dotboost.html.twig b/src/Page/templates/page/dotboost.html.twig index b2c7e563..3b334201 100644 --- a/src/Page/templates/page/dotboost.html.twig +++ b/src/Page/templates/page/dotboost.html.twig @@ -91,28 +91,6 @@
-
-
-
Loaded into context
- - - - - - - - - - - - - - - - - -
-
@@ -548,14 +526,18 @@ cp -r dotboost-main/.claude .claude detection runs first.

-
- Detected variants - API Admin Frontend - Light Queue -

Before adapting the skills to a new Dotkernel application, the advice from its maintainer is to spend - an hour reading that repo and correcting them against what is actually there. A skill written from - framework docs rather than the codebase produces confident wrong answers, which is worse than no - skill.

+
+
+ Detected variants
+ API Admin Frontend + Light Queue +
+
+

Before adapting the skills to a new Dotkernel application, the advice from its maintainer is to spend + an hour reading that repo and correcting them against what is actually there. A skill written from + framework docs rather than the codebase produces confident wrong answers, which is worse than no + skill.

+
diff --git a/src/Page/templates/page/frontend.html.twig b/src/Page/templates/page/frontend.html.twig index d0f7fe64..e8e7e646 100644 --- a/src/Page/templates/page/frontend.html.twig +++ b/src/Page/templates/page/frontend.html.twig @@ -139,26 +139,6 @@
-
-
-
Composed on the server
- - - - - - - - - - - - - - - -
-
diff --git a/src/Page/templates/page/light.html.twig b/src/Page/templates/page/light.html.twig index ac52165a..5b8f1de7 100644 --- a/src/Page/templates/page/light.html.twig +++ b/src/Page/templates/page/light.html.twig @@ -23,17 +23,14 @@ .spec-note { margin-top: 14px; font-size: 13.5px; color: var(--text-dim); } .step-cmd { display: block; margin-top: 12px; font-family: var(--mono); font-size: 12.5px; color: var(--teal); overflow-x: auto; } - /* Monitor illustration in the hero - scoped to this page. */ - .hero-monitor { display: block; width: 100%; max-width: 300px; height: auto; margin: 10px auto 4px; } - .hero-monitor .mon-bezel { fill: var(--surface-2); stroke: var(--border); stroke-width: 2; } - .hero-monitor .mon-screen { fill: var(--bg); stroke: var(--border); stroke-width: 1; } - .hero-monitor .mon-topbar { fill: var(--border-soft); } - .hero-monitor .mon-title { font-family: var(--mono); font-weight: 700; font-size: 13px; fill: var(--page-accent, var(--sage)); } - .hero-monitor .mon-line { stroke-linecap: round; } - .hero-monitor .mon-line--nav { stroke: var(--text-dim); stroke-width: 2; opacity: .55; } - .hero-monitor .mon-line--heading { stroke: var(--text); stroke-width: 5; } - .hero-monitor .mon-line--text { stroke: var(--text-dim); stroke-width: 2.5; } - .hero-monitor .mon-stand { fill: var(--border); } + /* Request flow and dependency chips in the hero - scoped to this page. */ + .light-flow { display: block; width: 100%; height: auto; margin-top: 6px; } + .light-flow .lf-box { fill: var(--surface-2); stroke: var(--border-soft); stroke-width: 1.25; } + .light-flow .lf-line { stroke: var(--border-soft); stroke-width: 1.5; } + .light-flow .lf-arrow { fill: var(--border-soft); } + .light-flow .lf-label { font-family: var(--mono); font-size: 10px; font-weight: 600; fill: var(--text); text-anchor: middle; } + .dep-chips { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 18px; } + .dep-chip { font-family: var(--mono); font-size: 11px; color: var(--sage); background: var(--sage-dim); border: 1px solid var(--sage); border-radius: 6px; padding: 5px 10px; } {% endblock %} @@ -76,45 +73,45 @@
-
What you get, out of the box
- - - - - My Site - - - - - - - - - - +
Straightforward request
+ + + + + + + + + + + + + + Request + + + Router + + + Pipeline + + + Twig + + + Response +
+ mezzio + fastroute + twigrenderer + errorhandler + config-aggregator + component-installer +
-
-
-
Six direct dependencies
- - - - - - - - - - - - - - -
-
@@ -441,7 +438,7 @@ PHP - 8.2, 8.3 or 8.4, with mod_php or FCGI (FPM). memory_limit at least + 8.2+ with mod_php or FCGI (FPM). memory_limit at least 128M. diff --git a/src/Page/templates/page/queue.html.twig b/src/Page/templates/page/queue.html.twig index ea58f051..c09a5486 100644 --- a/src/Page/templates/page/queue.html.twig +++ b/src/Page/templates/page/queue.html.twig @@ -22,10 +22,22 @@ .spec-note { margin-top: 14px; font-size: 13.5px; color: var(--text-dim); } .step-cmd { display: block; margin-top: 12px; font-family: var(--mono); font-size: 12.5px; color: var(--teal); overflow-x: auto; } - /* Backlog bars in the hero - scoped to this page. */ - .load-bars { display: flex; align-items: flex-end; justify-content: center; gap: 22px; height: 150px; margin-top: 14px; padding: 0 6px; } - .load-bar { position: relative; width: 44px; border-radius: 6px 6px 3px 3px; overflow: hidden; } - .load-bar-fill { position: absolute; left: 0; right: 0; bottom: 0; background: rgba(0, 0, 0, .35); } + /* Message-journey diagram in the hero - scoped to this page. */ + .flow-diagram { display: block; width: 100%; height: auto; margin-top: 4px; } + .flow-diagram .flow-box { fill: var(--surface); stroke: var(--border); stroke-width: 1.25; } + .flow-diagram .flow-line { stroke: var(--border-soft); stroke-width: 1.5; fill: none; } + .flow-diagram .flow-arrowhead { fill: var(--border-soft); } + .flow-diagram .flow-msg { stroke: var(--text-dim); stroke-width: 1.25; opacity: .45; } + .flow-diagram .flow-dot { fill: var(--sage); } + .flow-diagram .flow-worker { fill: var(--sage-dim); stroke: var(--sage); stroke-width: 1.25; } + .flow-diagram .flow-success { fill: var(--surface); stroke: var(--sage); stroke-width: 1.5; } + .flow-diagram .flow-check { stroke: var(--sage); stroke-width: 2; fill: none; } + .flow-diagram .flow-dash { stroke: var(--brand-red); stroke-width: 1.5; fill: none; stroke-dasharray: 4 4; opacity: .85; } + .flow-diagram .flow-dlq { fill: var(--surface); stroke: var(--brand-red); stroke-width: 1.25; } + .flow-diagram .flow-dlq-arrowhead { fill: var(--brand-red); } + .flow-diagram .flow-label { font-family: var(--mono); font-size: 11px; font-weight: 600; fill: var(--text); text-anchor: middle; } + .flow-diagram .flow-label-sm { font-size: 10px; } + .flow-diagram .flow-sub { font-family: var(--mono); font-size: 8.5px; letter-spacing: .04em; text-transform: uppercase; fill: var(--text-dim); text-anchor: middle; } {% endblock %} @@ -68,39 +80,56 @@
-
Backlog across five workers
-
-
-
-
-
-
-
+
A message's journey
+ + + + + + + + + + + + + + + retries + + + TCP listener + Swoole + + + Valkey stream + + + + + + + + + Workers + Symfony Messenger + + + + + + + Processed + acked & removed + + + Dead letter + queue + what still fails +
-
-
-
Stream, worker, dead letter
- - - - - - - - - - - - - - - - - -
-
@@ -483,13 +512,17 @@ configuration as the application that queued the job.

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

Keep Core in sync between the main project and the queue and every class, service and configuration - needed for message processing is already there - which is what makes a worker able to compose an - email from your own templates.

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

Keep Core in sync between the main project and the queue and every class, service and configuration + needed for message processing is already there - which is what makes a worker able to compose an + email from your own templates.

+