PHPackages                             dotkernel/frontend - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Framework](/categories/framework)
4. /
5. dotkernel/frontend

ActiveProject[Framework](/categories/framework)

dotkernel/frontend
==================

Dotkernel Frontend Application

5.1.0(1y ago)253106[12 issues](https://github.com/dotkernel/frontend/issues)[2 PRs](https://github.com/dotkernel/frontend/pulls)MITPHPPHP ~8.2.0 || ~8.3.0CI passing

Since Mar 11Pushed 7mo ago5 watchersCompare

[ Source](https://github.com/dotkernel/frontend)[ Packagist](https://packagist.org/packages/dotkernel/frontend)[ Docs](https://github.com/dotkernel/frontend)[ RSS](/packages/dotkernel-frontend/feed)WikiDiscussions 5.0 Synced today

READMEChangelog (10)Dependencies (35)Versions (47)Used By (0)

Dotkernel Frontend
==================

[](#dotkernel-frontend)

Dotkernel Frontend is an application (skeleton) based on Mezzio microframework using Laminas components. It's designed as a web starter package suitable for frontend applications. The current functionality is included as a proof of concept and to showcase Frontend's file architecture:

- Contact us page
- Generic page with copy
- User accounts

Use these building blocks as an example for your own custom code.

> Check out our [demo](https://v5.dotkernel.net/).

Documentation
-------------

[](#documentation)

Documentation is available at:

Version History
---------------

[](#version-history)

BranchReleasePSR-11OSS LifecyclePHP Version5.0`>= 5.0`1[![OSS Lifecycle](https://camo.githubusercontent.com/2120de4821a2d7a6db4de7c1340eb421d937c152ebccbbf91f43faa597e70d29/68747470733a2f2f696d672e736869656c64732e696f2f6f73736c6966656379636c653f66696c655f75726c3d68747470732533412532462532466769746875622e636f6d253246646f746b65726e656c25324666726f6e74656e64253246626c6f62253246352e302532464f53534d45544144415441)](https://camo.githubusercontent.com/2120de4821a2d7a6db4de7c1340eb421d937c152ebccbbf91f43faa597e70d29/68747470733a2f2f696d672e736869656c64732e696f2f6f73736c6966656379636c653f66696c655f75726c3d68747470732533412532462532466769746875622e636f6d253246646f746b65726e656c25324666726f6e74656e64253246626c6f62253246352e302532464f53534d45544144415441)[![PHP from Packagist (specify version)](https://camo.githubusercontent.com/5b5b876f21aae2e30e173dc1361a8bd7cac2588ec6175c80e2bd9ad2d536ee13/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f7068702d762f646f746b65726e656c2f66726f6e74656e642f352e312e30)](https://camo.githubusercontent.com/5b5b876f21aae2e30e173dc1361a8bd7cac2588ec6175c80e2bd9ad2d536ee13/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f7068702d762f646f746b65726e656c2f66726f6e74656e642f352e312e30)4.0`< 5.0`1[![OSS Lifecycle](https://camo.githubusercontent.com/5bbf9d36e06adce5b24adb343987a221fb9942aad8f9860e0a6f194397418790/68747470733a2f2f696d672e736869656c64732e696f2f6f73736c6966656379636c653f66696c655f75726c3d68747470732533412532462532466769746875622e636f6d253246646f746b65726e656c25324666726f6e74656e64253246626c6f62253246342e302532464f53534d45544144415441)](https://camo.githubusercontent.com/5bbf9d36e06adce5b24adb343987a221fb9942aad8f9860e0a6f194397418790/68747470733a2f2f696d672e736869656c64732e696f2f6f73736c6966656379636c653f66696c655f75726c3d68747470732533412532462532466769746875622e636f6d253246646f746b65726e656c25324666726f6e74656e64253246626c6f62253246342e302532464f53534d45544144415441)[![PHP from Packagist (specify version)](https://camo.githubusercontent.com/e4233a0cd8ca76f2673a15a53e6489fa3b9db36d3541c908f7b07c1435f063d9/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f7068702d762f646f746b65726e656c2f66726f6e74656e642f342e322e31)](https://camo.githubusercontent.com/e4233a0cd8ca76f2673a15a53e6489fa3b9db36d3541c908f7b07c1435f063d9/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f7068702d762f646f746b65726e656c2f66726f6e74656e642f342e322e31)3.0`< 4.0`1[![OSS Lifecycle](https://camo.githubusercontent.com/199e1af4c1cb28ecf0e73b22a99e1959c802977cee27b308142a971d02816ddd/68747470733a2f2f696d672e736869656c64732e696f2f6f73736c6966656379636c653f66696c655f75726c3d68747470732533412532462532466769746875622e636f6d253246646f746b65726e656c25324666726f6e74656e64253246626c6f62253246332e302532464f53534d45544144415441)](https://camo.githubusercontent.com/199e1af4c1cb28ecf0e73b22a99e1959c802977cee27b308142a971d02816ddd/68747470733a2f2f696d672e736869656c64732e696f2f6f73736c6966656379636c653f66696c655f75726c3d68747470732533412532462532466769746875622e636f6d253246646f746b65726e656c25324666726f6e74656e64253246626c6f62253246332e302532464f53534d45544144415441)[![PHP from Packagist (specify version)](https://camo.githubusercontent.com/e00d26e9b3ddbb52f5a4461995298b7d756692b47ca713d6f89bee7d5fa77600/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f7068702d762f646f746b65726e656c2f66726f6e74656e642f332e322e34)](https://camo.githubusercontent.com/e00d26e9b3ddbb52f5a4461995298b7d756692b47ca713d6f89bee7d5fa77600/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f7068702d762f646f746b65726e656c2f66726f6e74656e642f332e322e34)Badges
------

[](#badges)

[![OSS Lifecycle](https://camo.githubusercontent.com/f85b33e6f9c991f6d3a580e50ae01768f639805394b8f734eaaae582cfc102c6/68747470733a2f2f696d672e736869656c64732e696f2f6f73736c6966656379636c652f646f746b65726e656c2f66726f6e74656e64)](https://camo.githubusercontent.com/f85b33e6f9c991f6d3a580e50ae01768f639805394b8f734eaaae582cfc102c6/68747470733a2f2f696d672e736869656c64732e696f2f6f73736c6966656379636c652f646f746b65726e656c2f66726f6e74656e64)[![Packagist Dependency Version](https://camo.githubusercontent.com/c324ffd26b26adfa78b10e6045bec0f83da18d4f2b07b24d2254f7da8f49426c/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f646570656e64656e63792d762f646f746b65726e656c2f66726f6e74656e642f706870)](https://camo.githubusercontent.com/c324ffd26b26adfa78b10e6045bec0f83da18d4f2b07b24d2254f7da8f49426c/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f646570656e64656e63792d762f646f746b65726e656c2f66726f6e74656e642f706870)

[![GitHub issues](https://camo.githubusercontent.com/41236c44b90468bcfa39c3acbd6c8d768f5ff87bafdb559ad5643a2585a9d0a4/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6973737565732f646f746b65726e656c2f66726f6e74656e64)](https://github.com/dotkernel/frontend/issues)[![GitHub forks](https://camo.githubusercontent.com/ea62aa45d0f35ecb0e3664890fb05327d35f0276195b01bde44b98cca384eee7/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f666f726b732f646f746b65726e656c2f66726f6e74656e64)](https://github.com/dotkernel/frontend/network)[![GitHub stars](https://camo.githubusercontent.com/dec213ead3f6fa7bb595c5236055d832306e634382203a49ed0b2d5f410fc427/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f646f746b65726e656c2f66726f6e74656e64)](https://github.com/dotkernel/frontend/stargazers)[![GitHub license](https://camo.githubusercontent.com/c8900edb8dc4896fe4ec46a131413fce47dc4c9b2e545c270f3f3dfef82e45a7/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f646f746b65726e656c2f66726f6e74656e64)](https://github.com/dotkernel/frontend/blob/5.0/LICENSE.md)

[![Continuous Integration](https://github.com/dotkernel/frontend/actions/workflows/continuous-integration.yml/badge.svg?branch=5.0)](https://github.com/dotkernel/frontend/actions/workflows/continuous-integration.yml)[![codecov](https://camo.githubusercontent.com/fc7acc2beff37065dcf832c7a0c9439f974554584c5466e2c87430ec6ad2709f/68747470733a2f2f636f6465636f762e696f2f67682f646f746b65726e656c2f66726f6e74656e642f67726170682f62616467652e7376673f746f6b656e3d42515334335557414d34)](https://codecov.io/gh/dotkernel/frontend)[![Qodana](https://github.com/dotkernel/frontend/actions/workflows/qodana_code_quality.yml/badge.svg)](https://github.com/dotkernel/frontend/actions/workflows/qodana_code_quality.yml)[![PHPStan](https://github.com/dotkernel/frontend/actions/workflows/static-analysis.yml/badge.svg?branch=5.0)](https://github.com/dotkernel/frontend/actions/workflows/static-analysis.yml)

Installing Dotkernel `frontend`
-------------------------------

[](#installing-dotkernel-frontend)

- [Installing Dotkernel `frontend`](#installing-dotkernel-frontend)
    - [Composer](#composer)
    - [Choose a destination path for Dotkernel `frontend` installation](#choosing-an-installation-path-for-dotkernel-frontend)
    - [Installing Dotkernel Frontend](#installing-dotkernel-frontend)
    - [Configuration - First Run](#configuration---first-run)
    - [Testing (Running)](#running-the-application)

Tools
-----

[](#tools)

Dotkernel Frontend interface has been tested with npm v10.0.4 and Node.js v20.11.0.

### Composer

[](#composer)

Installation instructions:

- [Composer Installation - Linux/Unix/OSX](https://getcomposer.org/doc/00-intro.md#installation-linux-unix-osx)
- [Composer Installation - Windows](https://getcomposer.org/doc/00-intro.md#installation-windows)

> If you have never used composer before make sure you read the [`Composer Basic Usage`](https://getcomposer.org/doc/01-basic-usage.md) section in Composer's documentation

Choosing an installation path for Dotkernel `frontend`
------------------------------------------------------

[](#choosing-an-installation-path-for-dotkernel-frontend)

Example:

- absolute path `/var/www/dk`
- or relative path `dk` (equivalent with `./dk`)

Installing Dotkernel `frontend`
-------------------------------

[](#installing-dotkernel-frontend-1)

After you choose the path for Dotkernel Frontend (`dk` will be used for the remainder of this example), let's move onto installation.

### Note

[](#note)

The installation uses the PHP extension `ext-intl` that may not be enabled by default in your web server. If the installation returns a similar error to the below, check the `extension=intl` extension in your `php.ini`.

```
Your requirements could not be resolved to an installable set of packages.

Problem 1
 - laminas/laminas-i18n 2.10.3 requires ext-intl * -> the requested PHP extension intl is missing from your system.
```

To enable an extension, remove the semicolon (;) in front of it.

#### Installing Dotkernel `frontend` using git clone

[](#installing-dotkernel-frontend-using-git-clone)

This method ensures that the default branch is installed, even if it is not released. Run the following command:

```
git clone https://github.com/dotkernel/frontend.git .
```

The dependencies have to be installed separately, by running this command:

```
composer install
```

The setup script prompts for some configuration settings, for example the lines below:

```
Please select which config file you wish to inject 'Laminas\Diactoros\ConfigProvider' into:
  [0] Do not inject
  [1] config/config.php
  Make your selection (default is 1):
```

Simply select `[0] Do not inject`, because Dotkernel includes its own configProvider which already contains the prompted configurations.

If you choose `[1] config/config.php` Laminas's `ConfigProvider` from `session` will be injected.

The next question is:

`Remember this option for other packages of the same type? (y/N)`

Configuration - First Run
-------------------------

[](#configuration---first-run)

- duplicate `config/autoload/development.local.php.dist` as `config/autoload/development.local.php`
- duplicate `config/autoload/local.php.dist` as `config/autoload/local.php`
- duplicate `config/autoload/mail.local.php.dist` as `config/autoload/mail.local.php`
- Edit `config/autoload/local.php` according to your dev machine and fill in the `database` configuration.

Configuration - Mail (optional)
-------------------------------

[](#configuration---mail-optional)

If you want your application to send mails on registration, contact etc. add valid credentials to the following keys in `config/autoload/mail.local.php`

Under `message_options` key:

- `from` - email address that will send emails (required)
- `from_name` - organization name for signing sent emails (optional)

Under `smtp_options` key:

- `host` - hostname or IP address of the mail server (required)
- `connection_config` - add the `username` and `password` keys (required)

In `config/autoload/local.php` edit the key `contact` =&gt; `message_receivers` =&gt; `to` with *string* values for emails that should receive contact messages.

Note: **Please add at least 1 email address in order for contact message to reach someone**

Also feel free to add as many CCs as you want under the `contact` =&gt; `message_receivers` =&gt; `cc` key.

Configuration - reCAPTCHA (optional)
------------------------------------

[](#configuration---recaptcha-optional)

reCAPTCHA is used to prevent abusive activities on your website. Dotkernel frontend uses the Google reCAPTCHA for its contact us form. You must first generate a `siteKey` and `secretKey` in your Google account - [Google reCAPTCHA](https://www.google.com/recaptcha/admin)

Update the `recaptcha` array in `config/autoload/local.php` with the `siteKey` and `secretKey` from Google reCAPTCHA.

Note: you need to whitelist `localhost` in the reCAPTCHA settings page during development. **When in production do not forget to either remove `localhost` from the reCAPTCHA whitelist, or have a separate reCAPTCHA**

Database migration
------------------

[](#database-migration)

Running the database migration is done with this command

```
php vendor/bin/doctrine-migrations migrate
```

Note: if you have already run the phinx migrations, you may get this message

```
WARNING! You have x previously executed migrations in the database that are not registered migrations.
  {migration list}
Are you sure you wish to continue? (y/n)
```

After submitting `y`, you will get this confirmation message.

```
WARNING! You are about to execute a database migration that could result in schema changes and data loss. Are you sure you wish to continue? (y/n)
```

Again, submit `y` to run all the migrations in chronological order. Each migration will be logged in the `migrations` table to prevent running the same migration more than once, which is often not desirable.

Seeding the database (Fixtures)
-------------------------------

[](#seeding-the-database-fixtures)

Seeding the database is done with the help of our custom package `dotkernel/dot-data-fixtures` built on top of doctrine/data-fixtures. To execute all fixtures, run:

```
php bin/doctrine fixtures:execute
```

Development mode
----------------

[](#development-mode)

Run this command to enable dev mode by turning debug flag to `true` and turning configuration caching to `off`. It will also make sure that any existing config cache is cleared.

```
composer development-enable
```

- If not already done, remove the `.dist` extension from `config/autoload/development.global.php.dist`.

NPM Commands
------------

[](#npm-commands)

To install dependencies into the `node_modules` directory run this command.

```
npm install
```

- If `npm install` fails, this could be caused by user permissions of npm. Recommendation is to install npm through `Node Version Manager`.

The watch command compiles the components then watches the files and recompiles when one of them changes.

```
npm run watch
```

After all updates are done, this command compiles the assets locally, minifies them and makes them ready for production.

```
npm run prod
```

Running the application
-----------------------

[](#running-the-application)

We recommend running your applications in WSL:

- make sure you have [WSL](https://github.com/dotkernel/development/blob/main/wsl/README.md) installed on your system
- currently we provide a distro implementations for [AlmaLinux9](https://github.com/dotkernel/development/blob/main/wsl/os/almalinux9/README.md)
- install the application in a virtualhost as recommended by the chosen distro
- set `$baseUrl` in **config/autoload/local.php** to the address of the virtualhost
- run the application by opening the virtualhost address in your browser

You should see the `Dotkernel Frontend` welcome page.

**NOTE:**

- If you are getting exceptions or errors regarding some missing services, try running the following command:

```
sudo php bin/clear-config-cache.php
```

> If `config-cache.php` is present that config will be loaded regardless of the `ConfigAggregator::ENABLE_CACHE` in `config/autoload/mezzio.global.php`

- **Development only**: `session.cookie_secure` does not work locally so make sure you modify your `local.php`, as per the following:

```
# other code

return [
    # other configurations...
    'session_config' => [
        'cookie_secure' => false,
    ],
];
```

Do not change this in `local.php.dist` as well because this value should remain `true` on production.

###  Health Score

48

—

FairBetter than 93% of packages

Maintenance42

Moderate activity, may be stable

Popularity23

Limited adoption so far

Community21

Small or concentrated contributor base

Maturity91

Battle-tested with a long release history

 Bus Factor2

2 contributors hold 50%+ of commits

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~83 days

Recently: every ~103 days

Total

39

Last Release

225d ago

Major Versions

2.0.x-dev → 3.0.02020-05-19

3.3 → 4.0.02022-11-25

4.2.1 → 5.0.02024-09-16

3.0.x-dev → 4.0.x-dev2025-11-21

4.0.x-dev → 5.0.x-dev2025-11-21

PHP version history (6 changes)0.1.0PHP ^7.1

v2.0.0PHP ^7.2

3.0.0PHP ^7.4

3.3PHP ^7.4 || ~8.0.0 || ~8.1.0

4.0.0PHP ~8.1.0 || ~8.2.0

4.2.0PHP ~8.2.0 || ~8.3.0

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/1156873?v=4)[Dotkernel](/maintainers/dotkernel)[@dotkernel](https://github.com/dotkernel)

---

Top Contributors

[![arhimede](https://avatars.githubusercontent.com/u/22009710?v=4)](https://github.com/arhimede "arhimede (208 commits)")[![marioradu05](https://avatars.githubusercontent.com/u/10761919?v=4)](https://github.com/marioradu05 "marioradu05 (95 commits)")[![alexmerlin](https://avatars.githubusercontent.com/u/4542449?v=4)](https://github.com/alexmerlin "alexmerlin (91 commits)")[![bidi47](https://avatars.githubusercontent.com/u/27284979?v=4)](https://github.com/bidi47 "bidi47 (50 commits)")[![SergiuBota1](https://avatars.githubusercontent.com/u/50962867?v=4)](https://github.com/SergiuBota1 "SergiuBota1 (22 commits)")[![alinaclaudia](https://avatars.githubusercontent.com/u/12268430?v=4)](https://github.com/alinaclaudia "alinaclaudia (21 commits)")[![Jurj-Bogdan](https://avatars.githubusercontent.com/u/53825374?v=4)](https://github.com/Jurj-Bogdan "Jurj-Bogdan (10 commits)")[![pinclau](https://avatars.githubusercontent.com/u/24491812?v=4)](https://github.com/pinclau "pinclau (6 commits)")[![Calin23](https://avatars.githubusercontent.com/u/51288903?v=4)](https://github.com/Calin23 "Calin23 (4 commits)")[![claurospace](https://avatars.githubusercontent.com/u/224870609?v=4)](https://github.com/claurospace "claurospace (3 commits)")[![mstyle21](https://avatars.githubusercontent.com/u/23695798?v=4)](https://github.com/mstyle21 "mstyle21 (1 commits)")[![dependabot[bot]](https://avatars.githubusercontent.com/in/29110?v=4)](https://github.com/dependabot[bot] "dependabot[bot] (1 commits)")

---

Tags

bootstrap3dotkernelfrontend-applicationfrontend-applicationsjquerylaminasmezziomiddlewarephppsr-11psr-4psr-7middlewarelaminasmezziodotkerneldotkernel frontend

###  Code Quality

TestsPHPUnit

Static AnalysisPHPStan

Type Coverage Yes

### Embed Badge

![Health badge](/badges/dotkernel-frontend/health.svg)

```
[![Health](https://phpackages.com/badges/dotkernel-frontend/health.svg)](https://phpackages.com/packages/dotkernel-frontend)
```

###  Alternatives

[shlinkio/shlink

A self-hosted and PHP-based URL shortener application with CLI and REST interfaces

5.1k5.2k](/packages/shlinkio-shlink)[mezzio/mezzio-skeleton

Laminas mezzio skeleton. Begin developing PSR-15 middleware applications in seconds!

12926.6k](/packages/mezzio-mezzio-skeleton)[mezzio/mezzio-tooling

Migration and development tooling for Mezzio

191.2M22](/packages/mezzio-mezzio-tooling)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
