You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Out of the box, Admin, API, and Queue are separate codebases designed to complement each other — see the [Architecture Overview](../architecture.md) for how they fit together.
15
11
16
12
You can start with Dotkernel Admin and integrate it into your existing platform.
17
13
The Admin has built-in reports and graphs that can be configured and customized based on your needs.
@@ -31,3 +27,9 @@ A: No, out of the box they are separate codebases designed to complement each ot
31
27
32
28
**Q: What do Dotkernel API and Dotkernel Queue add to Admin?**
33
29
A: The API handles data manipulation for the platform, and Queue handles asynchronous task processing.
Out of the box, API, Admin, and Queue are separate codebases designed to complement each other — see the [Architecture Overview](../architecture.md) for how they fit together.
15
11
16
12
A safe bet is to start with Dotkernel API and integrate it into your existing platform.
17
13
The API can manage the access permissions to keep your data secure:
@@ -34,3 +30,9 @@ A: Admin-level users create and edit the data, while regular users read the data
34
30
35
31
**Q: What can I add to Dotkernel API later?**
36
32
A: Dotkernel Admin for its table-based management, reports and graphs, and Dotkernel Queue for asynchronous task processing.
Ties together the four building blocks of the Dotkernel Headless Platform — API, Admin, Queue, and the Core submodule — and shows how they combine into a single platform.
6
+
7
+
## Details
8
+
9
+
The [Headless Platform](introduction.md) principle is to decouple the frontend from the backend services, so any number of outside systems can consume the same backend. Dotkernel implements this with four building blocks, each its own Git repository, which you combine based on your needs:
10
+
11
+
-**[Dotkernel API](api/introduction.md)** exposes your data to 3rd-party frontends or backends.
12
+
-**[Dotkernel Admin](admin/introduction.md)** (optional) manages the data through a simple table-based UI, with built-in reports and graphs.
13
+
-**[Dotkernel Queue](queue/introduction.md)** (optional) handles asynchronous task processing as its own microservice.
14
+
-**[Core submodule](core/introduction.md)** is the shared codebase that any of the above applications can include, so they all manage database entities and services the same way.
15
+
16
+
You don't need every piece from the start. You can begin with [just Admin](admin/usage.md) or [just API](api/usage.md) and add the others later as requirements grow. Once you're running more than one application, pull the shared logic out into a [Core submodule](core/creation.md) and include it in each one — a typical setup looks like API + Core, Admin + Core, and Queue + Core, each in its own repository, all reading from the same shared entities and services (see [Using the Core Submodule](core/usage.md)).
17
+
18
+
Regardless of which pieces you use, every Dotkernel application and package boots the same way: through a [ConfigProvider](config-provider/introduction.md) that declares its dependencies, handlers, and configuration, merged together by the framework at [bootstrap time](config-provider/functionality.md).
19
+
20
+
## FAQ
21
+
22
+
**Q: What are the building blocks of the Dotkernel Headless Platform?**
23
+
A: Dotkernel API, Dotkernel Admin, Dotkernel Queue, and the Core submodule.
24
+
25
+
**Q: Do I need all four components to get started?**
26
+
A: No, you can start with just Admin or just API and add the others as your requirements grow.
27
+
28
+
**Q: How do multiple applications stay consistent with each other?**
29
+
A: By sharing a Core submodule for entities and services, and by each bootstrapping through its own ConfigProvider.
Copy file name to clipboardExpand all lines: docs/book/v1/config-provider/benefits.md
+8-3Lines changed: 8 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -9,9 +9,9 @@ Lists the benefits of using a ConfigProvider, including centralized, modular, co
9
9
-**Centralized setup** – Instead of hardcoding bootstrap code, you declare it in a config provider so it's easy to read, change, or extend.
10
10
-**Modular** – Each package can ship with its own config without interfering with others.
11
11
-**Container-friendly** – It works well with frameworks using DI containers like Laminas ServiceManager, PHP-DI, or Pimple.
12
-
-**Standardized service definitions**- It has consistent rules for object creation that are separate from business logic.
13
-
-**Environment-agnostic**- It returns an array that defines dev, test, or prod environments.
14
-
-**Testability**- The consistent, central configuration promotes isolated (e.g. per-module) testing, easier swapping of dependencies and the assertion of pipeline setup (e.g. check if a config key is present).
12
+
-**Standardized service definitions**– It has consistent rules for object creation that are separate from business logic.
13
+
-**Environment-agnostic**– It returns an array that defines dev, test, or prod environments.
14
+
-**Testability**– The consistent, central configuration promotes isolated (e.g. per-module) testing, easier swapping of dependencies and the assertion of pipeline setup (e.g. check if a config key is present).
15
15
16
16
> **Dotkernel ConfigProviders** have to be **added manually** in `config/config.php`, because all the initial ConfigProviders required to install the applications are already injected.
17
17
@@ -25,3 +25,8 @@ A: Yes, it's container-friendly and works with DI containers like Laminas Servic
25
25
26
26
**Q: Do I need to register Dotkernel ConfigProviders manually?**
27
27
A: Yes, Dotkernel ConfigProviders must be added manually in `config/config.php`.
Below you can see how Mezzio and Dotkernel merge and use ConfigProviders to build the middleware pipeline and dependencies.
28
28
29
-

29
+

30
30
31
31
## FAQ
32
32
@@ -38,3 +38,8 @@ A: `$app->pipe()` resolves a service name from the container, wraps a middleware
38
38
39
39
**Q: Why does the error-handling middleware run last in the pipeline?**
40
40
A: So it can catch any exceptions raised by the preceding middleware.
0 commit comments