{"id":15019266,"url":"https://github.com/dotkernel/frontend","last_synced_at":"2025-08-13T07:11:35.036Z","repository":{"id":11832771,"uuid":"70717600","full_name":"dotkernel/frontend","owner":"dotkernel","description":"Dotkernel Frontend Application.  Based on Mezzio microframework using Laminas components.","archived":false,"fork":false,"pushed_at":"2025-04-10T13:52:29.000Z","size":3980,"stargazers_count":26,"open_issues_count":14,"forks_count":5,"subscribers_count":6,"default_branch":"5.0","last_synced_at":"2025-05-08T23:43:34.268Z","etag":null,"topics":["bootstrap3","dotkernel","frontend-application","frontend-applications","jquery","laminas","mezzio","middleware","php","psr-11","psr-4","psr-7"],"latest_commit_sha":null,"homepage":"https://v5.dotkernel.net","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dotkernel.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-10-12T16:10:53.000Z","updated_at":"2025-05-05T12:18:20.000Z","dependencies_parsed_at":"2024-02-15T17:54:20.234Z","dependency_job_id":"2750fe75-2803-4294-8266-814ded02322a","html_url":"https://github.com/dotkernel/frontend","commit_stats":{"total_commits":342,"total_committers":24,"mean_commits":14.25,"dds":0.8421052631578947,"last_synced_commit":"987ee491eacdc45406535c8bc45e84b83d01675a"},"previous_names":[],"tags_count":34,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dotkernel%2Ffrontend","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dotkernel%2Ffrontend/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dotkernel%2Ffrontend/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dotkernel%2Ffrontend/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dotkernel","download_url":"https://codeload.github.com/dotkernel/frontend/tar.gz/refs/heads/5.0","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253166474,"owners_count":21864467,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bootstrap3","dotkernel","frontend-application","frontend-applications","jquery","laminas","mezzio","middleware","php","psr-11","psr-4","psr-7"],"created_at":"2024-09-24T19:53:14.723Z","updated_at":"2025-05-08T23:43:45.910Z","avatar_url":"https://github.com/dotkernel.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Dotkernel Frontend\n\nDotkernel Frontend is an application (skeleton) based on Mezzio microframework using Laminas components.\nIt's designed as a web starter package suitable for frontend applications.\nThe current functionality is included as a proof of concept and to showcase Frontend's file architecture:\n\n- Contact us page\n- Generic page with copy\n- User accounts\n\nUse these building blocks as an example for your own custom code.\n\n\u003e Check out our [demo](https://v5.dotkernel.net/).\n\n## Documentation\n\nDocumentation is available at: https://docs.dotkernel.org/frontend-documentation/\n\n## Badges\n\n![OSS Lifecycle](https://img.shields.io/osslifecycle/dotkernel/frontend)\n![PHP from Packagist (specify version)](https://img.shields.io/packagist/php-v/dotkernel/frontend/5.0.0)\n\n[![GitHub issues](https://img.shields.io/github/issues/dotkernel/frontend)](https://github.com/dotkernel/frontend/issues)\n[![GitHub forks](https://img.shields.io/github/forks/dotkernel/frontend)](https://github.com/dotkernel/frontend/network)\n[![GitHub stars](https://img.shields.io/github/stars/dotkernel/frontend)](https://github.com/dotkernel/frontend/stargazers)\n[![GitHub license](https://img.shields.io/github/license/dotkernel/frontend)](https://github.com/dotkernel/frontend/blob/5.0/LICENSE.md)\n\n[![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)\n[![codecov](https://codecov.io/gh/dotkernel/frontend/graph/badge.svg?token=BQS43UWAM4)](https://codecov.io/gh/dotkernel/frontend)\n[![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)\n[![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)\n\n## Installing Dotkernel `frontend`\n\n- [Installing Dotkernel `frontend`](#installing-dotkernel-frontend)\n    - [Composer](#composer)\n    - [Choose a destination path for Dotkernel `frontend` installation](#choosing-an-installation-path-for-dotkernel-frontend)\n    - [Installing Dotkernel Frontend](#installing-dotkernel-frontend)\n    - [Configuration - First Run](#configuration---first-run)\n    - [Testing (Running)](#running-the-application)\n\n## Tools\n\nDotkernel Frontend interface has been tested with npm v10.0.4 and Node.js v20.11.0.\n\n### Composer\n\nInstallation instructions:\n\n- [Composer Installation -  Linux/Unix/OSX](https://getcomposer.org/doc/00-intro.md#installation-linux-unix-osx)\n- [Composer Installation - Windows](https://getcomposer.org/doc/00-intro.md#installation-windows)\n\n\u003e 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\n\n## Choosing an installation path for Dotkernel `frontend`\n\nExample:\n\n- absolute path `/var/www/dk`\n- or relative path `dk` (equivalent with `./dk`)\n\n## Installing Dotkernel `frontend`\n\nAfter you choose the path for Dotkernel Frontend (`dk` will be used for the remainder of this example), let's move onto installation.\n\n### Note\n\nThe 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`.\n\n```shell\nYour requirements could not be resolved to an installable set of packages.\n\nProblem 1\n - laminas/laminas-i18n 2.10.3 requires ext-intl * -\u003e the requested PHP extension intl is missing from your system.\n```\n\nTo enable an extension, remove the semicolon (;) in front of it.\n\n#### Installing Dotkernel `frontend` using git clone\n\nThis method ensures that the default branch is installed, even if it is not released. Run the following command:\n\n```shell\ngit clone https://github.com/dotkernel/frontend.git .\n```\n\nThe dependencies have to be installed separately, by running this command:\n\n```shell\ncomposer install\n```\n\nThe setup script prompts for some configuration settings, for example the lines below:\n\n```shell\nPlease select which config file you wish to inject 'Laminas\\Diactoros\\ConfigProvider' into:\n  [0] Do not inject\n  [1] config/config.php\n  Make your selection (default is 1):\n```\n\nSimply select `[0] Do not inject`, because Dotkernel includes its own configProvider which already contains the prompted configurations.\n\nIf you choose `[1] config/config.php` Laminas's `ConfigProvider` from `session` will be injected.\n\nThe next question is:\n\n`Remember this option for other packages of the same type? (y/N)`\n\n## Configuration - First Run\n\n- duplicate `config/autoload/development.local.php.dist` as `config/autoload/development.local.php`\n- duplicate `config/autoload/local.php.dist` as `config/autoload/local.php`\n- duplicate `config/autoload/mail.local.php.dist` as `config/autoload/mail.local.php`\n- Edit `config/autoload/local.php` according to your dev machine and fill in the `database` configuration.\n\n## Configuration - Mail (optional)\n\nIf you want your application to send mails on registration, contact etc. add valid credentials to the following keys in `config/autoload/mail.local.php`\n\nUnder `message_options` key:\n\n- `from` - email address that will send emails (required)\n- `from_name` - organization name for signing sent emails (optional)\n\nUnder `smtp_options` key:\n\n- `host` - hostname or IP address of the mail server (required)\n- `connection_config` - add the `username` and `password` keys (required)\n\nIn `config/autoload/local.php` edit the key `contact` =\u003e `message_receivers` =\u003e `to` with *string* values for emails that should receive contact messages.\n\nNote: **Please add at least 1 email address in order for contact message to reach someone**\n\nAlso feel free to add as many CCs as you want under the `contact` =\u003e `message_receivers` =\u003e `cc` key.\n\n## Configuration - reCAPTCHA (optional)\n\nreCAPTCHA is used to prevent abusive activities on your website. Dotkernel frontend uses the Google reCAPTCHA for its contact us form.\nYou must first generate a `siteKey` and `secretKey` in your Google account - [Google reCAPTCHA](https://www.google.com/recaptcha/admin)\n\nUpdate the `recaptcha` array in `config/autoload/local.php` with the `siteKey` and `secretKey` from Google reCAPTCHA.\n\nNote: you need to whitelist `localhost` in the reCAPTCHA settings page during development.\n**When in production do not forget to either remove `localhost` from the reCAPTCHA whitelist, or have a separate reCAPTCHA**\n\n## Database migration\n\nRunning the database migration is done with this command\n\n```shell\nphp vendor/bin/doctrine-migrations migrate\n```\n\nNote: if you have already run the phinx migrations, you may get this message\n\n```shell\nWARNING! You have x previously executed migrations in the database that are not registered migrations.\n  {migration list}\nAre you sure you wish to continue? (y/n)\n```\n\nAfter submitting `y`, you will get this confirmation message.\n\n```shell\nWARNING! 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)\n```\n\nAgain, 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.\n\n## Seeding the database (Fixtures)\n\nSeeding 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:\n\n```shell\nphp bin/doctrine fixtures:execute\n```\n\n## Development mode\n\nRun 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.\n\n```shell\ncomposer development-enable\n```\n\n- If not already done, remove the `.dist` extension from `config/autoload/development.global.php.dist`.\n\n## NPM Commands\n\nTo install dependencies into the `node_modules` directory run this command.\n\n```shell\nnpm install\n```\n\n- If `npm install` fails, this could be caused by user permissions of npm. Recommendation is to install npm through `Node Version Manager`.\n\nThe watch command compiles the components then watches the files and recompiles when one of them changes.\n\n```shell\nnpm run watch\n```  \n\nAfter all updates are done, this command compiles the assets locally, minifies them and makes them ready for production.\n\n```shell\nnpm run prod\n```\n\n## Running the application\n\nWe recommend running your applications in WSL:\n\n- make sure you have [WSL](https://github.com/dotkernel/development/blob/main/wsl/README.md) installed on your system\n- currently we provide a distro implementations for [AlmaLinux9](https://github.com/dotkernel/development/blob/main/wsl/os/almalinux9/README.md)\n- install the application in a virtualhost as recommended by the chosen distro\n- set `$baseUrl` in **config/autoload/local.php** to the address of the virtualhost\n- run the application by opening the virtualhost address in your browser\n\nYou should see the `Dotkernel Frontend` welcome page.\n\n**NOTE:**\n\n- If you are getting exceptions or errors regarding some missing services, try running the following command:\n\n```shell\nsudo php bin/clear-config-cache.php\n```\n\n\u003e If `config-cache.php` is present that config will be loaded regardless of the `ConfigAggregator::ENABLE_CACHE` in `config/autoload/mezzio.global.php`\n\n- **Development only**: `session.cookie_secure` does not work locally so make sure you modify your `local.php`, as per the following:\n\n```php\n# other code\n\nreturn [\n    # other configurations...\n    'session_config' =\u003e [\n        'cookie_secure' =\u003e false,\n    ],\n];\n```\n\nDo not change this in `local.php.dist` as well because this value should remain `true` on production.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdotkernel%2Ffrontend","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdotkernel%2Ffrontend","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdotkernel%2Ffrontend/lists"}