Skip to content

Commit 0e774d9

Browse files
committed
synced pages
Signed-off-by: bidi47 <bidi@apidemia.com>
1 parent 247b3a6 commit 0e774d9

12 files changed

Lines changed: 77 additions & 67 deletions

‎public/admin.md‎

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,11 @@ A fast, reliable way to manage the records in your database with a simple table-
1616
- [View on GitHub](https://github.com/dotkernel/admin)
1717
- [Live demo](https://admin7.dotkernel.net/)
1818

19+
![PHP version for dotkernel/admin](https://img.shields.io/packagist/dependency-v/dotkernel/admin/php?style=flat&label=php)
20+
![Latest release of dotkernel/admin](https://img.shields.io/packagist/v/dotkernel/admin?style=flat)
21+
![License of dotkernel/admin](https://img.shields.io/github/license/dotkernel/admin?style=flat)
22+
![GitHub stars for dotkernel/admin](https://img.shields.io/github/stars/dotkernel/admin?style=flat&label=%E2%98%85)
23+
1924
| | |
2025
| --- | --- |
2126
| Runtime | Mezzio + Laminas |
@@ -210,7 +215,7 @@ If the fixtures ran, sign in with user `admin` and password `dotadmin` - the sam
210215
| Operating system | A \*nix based system is strongly recommended for production. |
211216
| PHP | 8.3 or newer, mod_php or FCGI (FPM). `memory_limit` at least 128M; `upload_max_filesize` and `post_max_size` at least 100M depending on your data. |
212217
| Web server | Apache 2.2+ with `mod_rewrite` and `.htaccess` support (`AllowOverride All`) - a default `.htaccess` ships in `public/`. On Nginx, translate it into server configuration. |
213-
| Database | MariaDB 10.7, 10.11 LTS, 11.4 LTS and 11.8 LTS, or PostgreSQL 13 and above. **MySQL is not supported**, as it has no UUID support. |
218+
| Database | MariaDB 11.4 LTS, 11.8 LTS and 12.3 LTS, or PostgreSQL 13 and above. **MySQL is not supported**, as it has no UUID support. |
214219
| Required extensions | `mbstring`, the CLI SAPI for cron jobs, and Composer available on `$PATH`. |
215220
| Recommended extensions | `opcache`; `pdo_mysql`, `pdo_pgsql` or `mysqli` to match your database; `dom` and `simplexml` for markup; `gd` and `exif` for images; `zlib`, `zip`, `bz2` for compression; `curl` when calling APIs; `sqlite3` for the test suite. |
216221

‎public/api.md‎

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,11 @@ OAuth 2.0, RBAC authorization, HAL payloads, standardized error responses and an
1616
- [View on GitHub](https://github.com/dotkernel/api)
1717
- [Live demo](https://api.dotkernel.net/)
1818

19+
![PHP version for dotkernel/api](https://img.shields.io/packagist/dependency-v/dotkernel/api/php?style=flat&label=php)
20+
![Latest release of dotkernel/api](https://img.shields.io/packagist/v/dotkernel/api?style=flat)
21+
![License of dotkernel/api](https://img.shields.io/github/license/dotkernel/api?style=flat)
22+
![GitHub stars for dotkernel/api](https://img.shields.io/github/stars/dotkernel/api?style=flat&label=%E2%98%85)
23+
1924
| | |
2025
| --- | --- |
2126
| Runtime | Mezzio + Laminas |
@@ -130,7 +135,7 @@ You keep full control of the UUID version without depending on database extensio
130135
### PostgreSQL support
131136

132137
PostgreSQL joins the supported databases.
133-
Because native UUID is required, you need PostgreSQL or MariaDB 10.7 or later; MySQL is no longer supported, as it has no UUID data type.
138+
Because native UUID is required, you need PostgreSQL 13+ or MariaDB 11.4 or later; MySQL is no longer supported, as it has no UUID data type.
134139

135140
### PHP 8.5
136141

@@ -175,7 +180,7 @@ The comparison below is drawn from the full side-by-side write-up on our blog.
175180
| --- | --- | --- |
176181
| First release | 2012 | 2018 |
177182
| Architecture | MVC, event driven | Middleware |
178-
| OSS lifecycle | Archived | Active |
183+
| OSS lifecycle | Archived | ![OSS lifecycle for dotkernel/api](https://img.shields.io/osslifecycle/dotkernel/api?style=flat) |
179184
| PHP version | ≤ 8.2 | See the PHP version badge for `dotkernel/api` |
180185
| Style | REST, RPC | REST |
181186
| Change management | Versioning | Deprecations (API evolution) |
@@ -283,7 +288,7 @@ Updates arrive with bugfixes and improvements from the PHP community, and breaki
283288

284289
## Install it and call an endpoint
285290

286-
Create the project with Composer, point it at PostgreSQL or MariaDB 10.7+, run the migrations, and you have an authenticated REST API with a browsable OpenAPI specification.
291+
Create the project with Composer, point it at PostgreSQL 13+ or MariaDB 11.4+, run the migrations, and you have an authenticated REST API with a browsable OpenAPI specification.
287292

288293
- [Installation guide](https://docs.dotkernel.org/api-documentation/)
289294
- [Try the demo](https://api.dotkernel.net/)

‎public/architecture.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ A request enters at the error boundary, passes through routing, negotiation, aut
2222
| Container | PSR-11 |
2323
| Logging | PSR-3 |
2424

25-
## Five phases, 19 stages
25+
## Six phases, 19 stages
2626

2727
Error boundary (1 stage) -> Request preparation (4 stages) -> Routing (4 stages) -> Contract & headers (4 stages) -> Identity (2 stages) -> Dispatch & fallback (4 stages).
2828

‎public/frontend.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -221,7 +221,7 @@ Duplicating `local.test.php.dist` gives your tests an in-memory database.
221221
| Required extensions | `curl`, `gettext`, `intl`, `json`, `mbstring`, the CLI SAPI for cron jobs, and Composer on `$PATH`. |
222222
| Recommended extensions | `opcache`; `pdo_mysql` for MySQL or MariaDB; `dom` and `simplexml` for markup; `gd` and `exif` for images; `zlib`, `zip`, `bz2` for compression; `sqlite3` for the test suite. |
223223

224-
Note that Frontend still supports MySQL - unlike API and Admin v7, which require native UUID support and therefore PostgreSQL or MariaDB 10.7+.
224+
Note that Frontend still supports MySQL - unlike API and Admin v7, which require native UUID support and therefore PostgreSQL 13+ or MariaDB 11.4+.
225225

226226
## Where Frontend sits
227227

‎public/queue.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -201,7 +201,7 @@ valkey-cli ping
201201

202202
### 4 . Clone and configure
203203

204-
Clone the queue branch, then copy each `.dist` configuration file into place - local, log, messenger and swoole - and fill them in.
204+
Clone the queue repo, then copy each `.dist` configuration file into place - local, log, messenger and swoole - and fill them in.
205205

206206
```shell
207207
git clone https://github.com/dotkernel/queue.git

‎src/Page/templates/page/admin.html.twig‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -432,7 +432,7 @@
432432
</tr>
433433
<tr>
434434
<th scope="row">PHP</th>
435-
<td>8.2 or newer, mod_php or FCGI (FPM). <code>memory_limit</code> at least 128M;
435+
<td>8.3 or newer, mod_php or FCGI (FPM). <code>memory_limit</code> at least 128M;
436436
<code>upload_max_filesize</code> and <code>post_max_size</code> at least 100M depending
437437
on your data.</td>
438438
</tr>

‎src/Page/templates/page/api.html.twig‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -383,7 +383,7 @@
383383
</div>
384384
<div class="standard">
385385
<h4>PHP 8.5</h4>
386-
<p>The API and Admin target PHP 8.5. Dependencies are kept current, and the
386+
<p>The API targets PHP 8.5, with Dotkernel Admin on 8.4. Dependencies are kept current, and the
387387
ecosystem's own packages track the versions Laminas and Doctrine support.</p>
388388
</div>
389389
<div class="standard">

‎src/Page/templates/page/architecture.html.twig‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@
107107

108108
<div class="hero-visual">
109109
<div class="pipeline">
110-
<div class="pipeline-label"><span>Five phases</span><span>19 stages</span></div>
110+
<div class="pipeline-label"><span>Six phases</span><span>19 stages</span></div>
111111
<div class="blocks-tower">
112112
<div class="block" style="width:100%; background:var(--brand-red)"><span class="name">Error boundary</span><span class="tag">1 stage</span></div>
113113
<div class="block" style="width:84%; background:var(--periwinkle)"><span class="name">Request preparation</span><span class="tag">4 stages</span></div>

‎src/Page/templates/page/dotboost.html.twig‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -266,8 +266,8 @@
266266
<tr><th scope="row">git rebase</th><td>ask</td><td>blocks</td></tr>
267267
<tr><th scope="row">doctrine-migrations migrate / execute</th><td>ask</td><td>blocks</td></tr>
268268
<tr><th scope="row">fixtures:execute, schema:drop, schema:update</th><td>ask, via bin/cli.php</td><td>blocks</td></tr>
269-
<tr><th scope="row">composer development-enable / -disable</th><td>—</td><td>blocks</td></tr>
270-
<tr><th scope="row">pip install, git checkout --, git filter-branch</th><td>—</td><td>blocks</td></tr>
269+
<tr><th scope="row">composer development-enable / -disable</th><td>-</td><td>blocks</td></tr>
270+
<tr><th scope="row">pip install, git checkout --, git filter-branch</th><td>-</td><td>blocks</td></tr>
271271
</tbody>
272272
</table>
273273
</div>

‎src/Page/templates/page/frontend.html.twig‎

Lines changed: 36 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@
5353
real, running features whose only job is to show you where your own code goes.
5454
</p>
5555
<div class="hero-ctas">
56-
<a class="btn btn-primary" href="https://docs.dotkernel.org/frontend/" target="_blank" rel="noopener">
56+
<a class="btn btn-primary" href="https://docs.dotkernel.org/frontend-documentation/" target="_blank" rel="noopener">
5757
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M4 19.5A2.5 2.5 0 0 1 6.5 17H20"/><path d="M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z"/></svg>
5858
Read the docs
5959
</a>
@@ -169,8 +169,8 @@
169169
</div>
170170
<div class="traits">
171171
<div class="trait">
172-
<img class="icon icon-lg" decoding="async" src="{{ asset('images/app/content/success-50.svg') }}" alt="User accounts, from register to unregister" loading="lazy">
173-
<p>User accounts, from register to unregister</p>
172+
<img class="icon icon-lg" decoding="async" src="{{ asset('images/app/content/success-50.svg') }}" alt="User accounts, from registration to account deletion" loading="lazy">
173+
<p>User accounts, from registration to account deletion</p>
174174
</div>
175175

176176
<div class="trait">
@@ -208,9 +208,10 @@
208208
</div>
209209
<p class="lede">The whole account lifecycle, already routed.</p>
210210
<p class="desc">
211-
Login, registration and account management, including avatar upload, password change and
212-
unregistering. Password reset and account activation emails are part of the flow, which is why
213-
the skeleton stores a name and an email address and nothing more.
211+
Login, registration and account management, including activation, password reset, avatar upload,
212+
profile details, password change and account deletion. Password reset and account activation
213+
emails are part of the flow, which is why the only personal details on a user profile are a name
214+
and an email address.
214215
</p>
215216
</div>
216217

@@ -246,10 +247,11 @@
246247
</div>
247248
<p class="lede">A public form that does not become a spam relay.</p>
248249
<p class="desc">
249-
The contact form uses Google reCAPTCHA, with the site and secret keys read from local
250-
configuration and the message recipients - <code>to</code> and any number of
251-
<code>cc</code> addresses - configured alongside them. Whitelist <code>localhost</code> while
252-
developing, and take it out again for production.
250+
The contact form uses score-based Google reCAPTCHA, with the site key, secret key and score
251+
threshold read from local configuration, and the message recipients - <code>to</code>,
252+
<code>cc</code> and <code>bcc</code> addresses - configured alongside them. The contact page will
253+
not render until the keys are set; whitelist <code>localhost</code> while developing, and take it
254+
out again for production.
253255
</p>
254256
</div>
255257

@@ -294,9 +296,9 @@
294296
<div class="card-top">
295297
<div><span class="kicker">Delivery . HTTP</span><h3>Headers &amp; CORS</h3></div>
296298
</div>
297-
<p class="lede">Response headers declared per route.</p>
299+
<p class="lede">Response headers declared globally or per route.</p>
298300
<p class="desc">
299-
<code>dot-response-header</code> sets custom headers per route from
301+
<code>dot-response-header</code> sets custom headers for all routes or for individual routes from
300302
<code>response-header.global.php</code>, while <code>mezzio-cors</code> handles origins, headers
301303
and cookies from <code>cors.global.php</code>.
302304
</p>
@@ -329,9 +331,10 @@
329331
second option, because deleting a user row is rarely what your foreign keys want.
330332
</p>
331333
<p class="lede">
332-
The skeleton stores only what it needs to run those flows: first name, last name and the email
333-
address used as the identity, for password reset and account activation. Anonymizing replaces
334-
exactly those.
334+
On the user profile, the skeleton stores only what it needs to run those flows: first name, last
335+
name and the email address used as the identity, for password reset and account activation.
336+
Anonymizing replaces exactly those; contact form messages and remember-me records are kept as they
337+
are.
335338
</p>
336339
<div class="hero-ctas">
337340
<a class="btn btn-ghost" href="https://docs.dotkernel.org/frontend-documentation/v5/reference/account-anonymization/" target="_blank" rel="noopener">Anonymization reference</a>
@@ -340,11 +343,12 @@
340343
<div class="callout">
341344
<h4>What anonymization changes</h4>
342345
<ul>
343-
<li>First and last name become <code>anonymous</code> plus the current UNIX timestamp - for example
344-
<code>anonymous1725980747</code>.</li>
346+
<li>First and last name become <code>anonymous</code> plus the current date and time in
347+
<code>dmYHis</code> format - for example <code>anonymous23092026155300</code>.</li>
345348
<li>The email becomes the same value plus whatever you set in <code>userAnonymizeAppend</code> -
346-
<code>anonymous1725980747@example.com</code>.</li>
347-
<li>The avatar image and its database record are deleted.</li>
349+
<code>anonymous23092026155300@example.com</code>.</li>
350+
<li>The account status is set to <code>deleted</code>; the row itself is kept.</li>
351+
<li>On account deletion, the avatar image and its database record are deleted.</li>
348352
</ul>
349353
<p>
350354
Point <code>userAnonymizeAppend</code> at a domain you control and it doubles as a catch-all
@@ -389,8 +393,9 @@
389393
<div class="standard">
390394
<h4>Module contents</h4>
391395
<p><code>Controller</code>, <code>Entity</code>, <code>Repository</code> and
392-
<code>Service</code> folders, plus <code>InputFilter</code>, <code>EventListener</code>,
393-
<code>Helper</code>, <code>Command</code> or <code>Factory</code> as needed.</p>
396+
<code>Service</code> folders, plus <code>Form</code>, <code>Fieldset</code>,
397+
<code>InputFilter</code>, <code>EventListener</code>, <code>Factory</code>,
398+
<code>Middleware</code> or <code>Enum</code> as needed.</p>
394399
</div>
395400
</div>
396401
</div>
@@ -423,9 +428,11 @@
423428
</div>
424429
<div class="standard">
425430
<h4>4 . Prepare the config files</h4>
426-
<p>Copy the <code>.dist</code> files into place - <code>local.php</code>,
427-
<code>development.local.php</code>, <code>mail.local.php</code>,
428-
<code>debugbar.local.php</code> - then fill in the database, SMTP and reCAPTCHA details.</p>
431+
<p><code>composer install</code> has already created <code>local.php</code> and
432+
<code>mail.global.php</code>, and development mode created <code>development.local.php</code>;
433+
fill in the database and reCAPTCHA details in <code>local.php</code>, and copy
434+
<code>mail.global.php</code> to <code>mail.local.php</code> for the sender and SMTP details, so
435+
credentials stay out of git.</p>
429436
</div>
430437
<div class="standard">
431438
<h4>5 . Migrate and seed</h4>
@@ -474,7 +481,7 @@
474481
</tr>
475482
<tr>
476483
<th scope="row">PHP</th>
477-
<td>8.2 or newer, mod_php or FCGI (FPM). <code>memory_limit</code> at least 128M;
484+
<td>8.2 or 8.3, mod_php or FCGI (FPM). <code>memory_limit</code> at least 128M;
478485
<code>upload_max_filesize</code> and <code>post_max_size</code> at least 100M depending
479486
on your data.</td>
480487
</tr>
@@ -491,16 +498,16 @@
491498
</tr>
492499
<tr>
493500
<th scope="row">Required extensions</th>
494-
<td><code>mbstring</code>, the CLI SAPI for cron jobs, and Composer on
501+
<td><code>curl</code>, <code>gettext</code>, <code>intl</code>, <code>json</code>,
502+
<code>mbstring</code>, the CLI SAPI for cron jobs, and Composer on
495503
<code>$PATH</code>.</td>
496504
</tr>
497505
<tr>
498506
<th scope="row">Recommended extensions</th>
499-
<td><code>opcache</code>; <code>pdo_mysql</code> or <code>mysqli</code>;
507+
<td><code>opcache</code>; <code>pdo_mysql</code> for MySQL or MariaDB;
500508
<code>dom</code> and <code>simplexml</code> for markup; <code>gd</code> and
501509
<code>exif</code> for images; <code>zlib</code>, <code>zip</code>,
502-
<code>bz2</code> for compression; <code>curl</code> when calling APIs;
503-
<code>sqlite3</code> for the test suite.</td>
510+
<code>bz2</code> for compression; <code>sqlite3</code> for the test suite.</td>
504511
</tr>
505512
</tbody>
506513
</table>

0 commit comments

Comments
 (0)