Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@
"php": "~8.5.0",
"doctrine/data-fixtures": "^2.2",
"doctrine/doctrine-fixtures-bundle": "^4.3",
"dotkernel/dot-errorhandler": "^4.4.0",
"dotkernel/dot-errorhandler": "^5.0.0",
"dotkernel/dot-cache": "^4.0",
"ramsey/uuid": "^4.5.0",
"ramsey/uuid-doctrine": "^2.1.0",
Expand Down
2 changes: 1 addition & 1 deletion public/css/app.css

Large diffs are not rendered by default.

41 changes: 41 additions & 0 deletions public/llms.txt
Comment thread
alexmerlin marked this conversation as resolved.
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
# Dotkernel Light

> Dotkernel Light is the technical blog for the Dotkernel headless PHP platform — a PSR-15 compliant application built on Mezzio and Laminas components. It publishes architecture write-ups, how-tos, and release notes for Dotkernel Admin, API, Frontend, and Light.

Content spans foundational PHP/middleware architecture (PSR-7, PSR-15, request lifecycle, dependency injection), practical how-tos (Doctrine migrations, CORS, authentication, caching), and the history/release notes of the Dotkernel ecosystem going back to 2008. Posts are organized by category and attributed to an author; URLs follow the pattern `/{category-slug}/{post-slug}/`.

## Docs

- [Blog](https://new.dotkernel.com/blog/): full list of posts, most recent first, paginated
- [Categories](https://new.dotkernel.com/categories/): all categories with post counts
- [About](https://new.dotkernel.com/about/): what Dotkernel Light is
- [Who We Are](https://new.dotkernel.com/who-we-are/): team/company background
- [OSS Package Lifecycle](https://new.dotkernel.com/dotkernel-packages-oss-lifecycle/): support/maintenance status of Dotkernel's open-source packages
- [Contact](https://new.dotkernel.com/contact/)

## Categories

- [Dotkernel](https://new.dotkernel.com/category/dotkernel/): the core framework — releases, caching, sessions, auth, WURFL/device detection (64 posts)
- [PHP Development](https://new.dotkernel.com/category/php-development/): general PHP tooling, environments, IDEs, security (20 posts)
- [How to's](https://new.dotkernel.com/category/how-to/): practical guides — migrations, CORS, PSR-7, routing (14 posts)
- [Best Practice](https://new.dotkernel.com/category/best-practice/): coding standards and database access patterns (13 posts)
- [Dotkernel API](https://new.dotkernel.com/category/dotkernel-api/): REST API package — auth, content negotiation, OpenAPI (10 posts)
- [Dotkernel 3](https://new.dotkernel.com/category/dotkernel3/): the v3 rewrite on Zend Expressive/Mezzio (9 posts)
- [Headless Platform](https://new.dotkernel.com/category/headless-platform/): the current Dotkernel headless architecture (9 posts)
- [Zend Framework](https://new.dotkernel.com/category/zend-framework/): Zend Framework 1 history and end-of-life notes (8 posts)
- [Javascript](https://new.dotkernel.com/category/javascript/): frontend/JS topics (3 posts)
- [Middleware](https://new.dotkernel.com/category/middleware/): PSR-15 middleware and routing internals (3 posts)
- [Architecture](https://new.dotkernel.com/category/architecture/): request lifecycle and application bootstrapping (3 posts)
- [PHP Troubleshooting](https://new.dotkernel.com/category/php-troubleshooting/): fixes for common PHP setup issues (2 posts)
- [Android](https://new.dotkernel.com/category/android/): Android install-referrer and broadcast receivers (2 posts)
- [PHPStorm](https://new.dotkernel.com/category/phpstorm/): IDE setup (1 post)
- [Licensing](https://new.dotkernel.com/category/licensing/): open-source license comparisons (1 post)

## Optional

- [Dotkernel Headless Platform: The What's, How's and Why's](https://new.dotkernel.com/headless-platform/dotkernel-headless-platform-the-whats-hows-and-whys/): best starting point for understanding the current platform
- [Understanding Middleware](https://new.dotkernel.com/architecture/understanding-middleware/)
- [Request Lifecycle for a Mezzio Based Application](https://new.dotkernel.com/architecture/request-lifecycle-for-a-mezzio-based-application/)
- [ConfigProvider: Bootstrap Modern PHP Applications](https://new.dotkernel.com/architecture/configprovider-bootstrap-modern-php-applications/)
- [What is PSR-7 and How to Use It](https://new.dotkernel.com/how-to/what-is-psr-7-and-how-to-use-it/)
- [Dependency Injection Made Easy in Laminas/Mezzio Applications](https://new.dotkernel.com/dotkernel/dependency-injection-made-easy-in-laminas-mezzio-applications/)
2 changes: 1 addition & 1 deletion src/App/assets/scss/components/_blog.scss
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// ============================================================
// Blog post page styles extracted & converted to SCSS
// Blog post page styles - extracted & converted to SCSS
// Relies on the global CSS custom properties (--bg, --text, etc.)
// defined in :root / [data-theme="light"].
// ============================================================
Expand Down
5 changes: 5 additions & 0 deletions src/App/assets/scss/components/_custom.scss
Original file line number Diff line number Diff line change
Expand Up @@ -813,6 +813,11 @@ details.acc {
gap: 20px;
}

.posts-grid-2-col {
display: grid;
grid-template-columns: repeat(2, 1fr);
gap: 20px;
}
.post-card {
background: var(--surface);
border: 1px solid var(--border);
Expand Down
2 changes: 2 additions & 0 deletions src/App/src/ConfigProvider.php
Original file line number Diff line number Diff line change
Expand Up @@ -122,6 +122,7 @@ public function getDependencies(): array
* paths: array{
* app: array{literal-string&non-falsy-string},
* error: array{literal-string&non-falsy-string},
* jsonld: array{literal-string&non-falsy-string},
* layout: array{literal-string&non-falsy-string},
* partial: array{literal-string&non-falsy-string},
* }
Expand All @@ -133,6 +134,7 @@ public function getTemplates(): array
'paths' => [
'app' => [__DIR__ . '/../templates/app'],
'error' => [__DIR__ . '/../templates/error'],
'jsonld' => [__DIR__ . '/../templates/JSON-LD'],
'layout' => [__DIR__ . '/../templates/layout'],
'partial' => [__DIR__ . '/../templates/partial'],
],
Expand Down
1 change: 1 addition & 0 deletions src/App/src/RoutesDelegator.php
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ public function __invoke(ContainerInterface $container, string $serviceName, cal
$uri = $request->getUri();
return new RedirectResponse((string) $uri . '/', 301);
});

$app->get('/{first}/{second}', function ($request) {
$uri = $request->getUri();
return new RedirectResponse((string) $uri . '/', 301);
Expand Down
101 changes: 101 additions & 0 deletions src/App/templates/JSON-LD/index.jsonld.twig
Comment thread
alexmerlin marked this conversation as resolved.
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@graph": [
{
"@type": "WebSite",
"@id": "{{ absolute_url('/') }}#website",
"url": "{{ absolute_url('/') }}",
"name": "Dotkernel",
"description": "Dotkernel is a collection of open-source application skeletons built on Mezzio and Laminas - pre-configured and ready for anything from a presentation site to an enterprise-grade API.",
"publisher": { "@id": "{{ absolute_url('/') }}#organization" }
},
{
"@type": "Organization",
"@id": "{{ absolute_url('/') }}#organization",
"name": "Dotkernel",
"url": "{{ absolute_url('/') }}",
"logo": "{{ absolute_url(asset('images/app/dotkernel-logo.png')) }}",
"sameAs": [
"https://github.com/dotkernel",
"https://www.dotkernel.com"
],
"parentOrganization": {
"@type": "Organization",
"name": "Apidemia",
"url": "https://www.apidemia.com"
}
},
{
"@type": "SoftwareApplication",
"name": "Dotkernel API",
"applicationCategory": "DeveloperApplication",
"operatingSystem": "Cross-platform",
"description": "A framework-less, opinionated toolkit for intermediate-to-advanced developers who want to ship REST APIs quickly and efficiently. An alternative to legacy Laminas API Tools (Apigility).",
"url": "https://github.com/dotkernel/api",
"license": "https://opensource.org/licenses/BSD-3-Clause",
"offers": {
"@type": "Offer",
"price": "0",
"priceCurrency": "USD"
}
},
{
"@type": "SoftwareApplication",
"name": "Dotkernel Admin",
"applicationCategory": "DeveloperApplication",
"operatingSystem": "Cross-platform",
"description": "A ready-to-go admin skeleton for managing your platform's records with a simple, table-based approach - plus the tools to build reports and dashboards.",
"url": "https://github.com/dotkernel/admin",
"license": "https://opensource.org/licenses/BSD-3-Clause",
"offers": {
"@type": "Offer",
"price": "0",
"priceCurrency": "USD"
}
},
{
"@type": "SoftwareApplication",
"name": "Dotkernel Queue",
"applicationCategory": "DeveloperApplication",
"operatingSystem": "Cross-platform",
"description": "Asynchronous task queuing built on Symfony Messenger, wired into the Laminas Service Manager container via netglue/laminas-messenger.",
"url": "https://github.com/dotkernel/queue",
"license": "https://opensource.org/licenses/BSD-3-Clause",
"offers": {
"@type": "Offer",
"price": "0",
"priceCurrency": "USD"
}
},
{
"@type": "SoftwareApplication",
"name": "Dotkernel Light",
"applicationCategory": "DeveloperApplication",
"operatingSystem": "Cross-platform",
"description": "A minimal, PSR-15 compliant skeleton built for learning purposes - a simple, didactic example of how to put together a basic website.",
"url": "https://github.com/dotkernel/light",
"license": "https://opensource.org/licenses/BSD-3-Clause",
"offers": {
"@type": "Offer",
"price": "0",
"priceCurrency": "USD"
}
},
{
"@type": "SoftwareApplication",
"name": "Dotkernel Frontend",
"applicationCategory": "DeveloperApplication",
"operatingSystem": "Cross-platform",
"description": "A web starter skeleton for building frontend applications on Mezzio and Laminas - a standalone alternative, separate from the Headless Platform.",
"url": "https://github.com/dotkernel/frontend",
"license": "https://opensource.org/licenses/BSD-3-Clause",
"offers": {
"@type": "Offer",
"price": "0",
"priceCurrency": "USD"
}
}
]
}
</script>
Loading