This page describes the default folder and file layout of Dotkernel Admin, including the purpose of bin, config, data, log, public and src, along with the Core module's submodule structure.
Dotkernel Admin follows the PSR-4 standards.
It is considered good practice to standardize the file structure of projects.
When using Dotkernel Admin, the following structure is installed by default:

.github - Contains GitHub workflow files.laminas-ci - Contains laminas-ci workflow filesbin folderThis folder contents are:
clear-config-cache.php - Removes the config cache file data/cache/config-cache.php; available only when development mode is enabledcli.php - Used to build console applications based on laminas-clidoctrine - Used by the doctrine fixtures to populate the database tablesconfig folderThis folder contains all application-related config files:
cli-config.php - Command line interface configuration used by migrations, fixtures, cronsconfig.php - Registers ConfigProviders for installing packagescontainer.php - Main service container that provides access to all registered servicesdevelopment.config.php.dist - Activates debug mode; gets symlinked as development.config.php when enabling development modepipeline.php - Contains a list of middlewares, in the order of their executionroutes.php - Registers the application's routestwig-cs-fixer.php - Configuration file for Twig code style checker/fixerconfig/autoload folderThis folder contains all service-related local and global config files:
authentication.global.php - Defines the Admin identityauthorization.global.php - Configures permissions for user rolesauthorization-guards.global.php - Configures access per route for user rolescli.global.php - Configures clicors.global.php - Configures Cross-Origin Resource Sharing, like call origin, headers, cookiesdependencies.global.php - Config file to set global dependencies that should be accessible by all modulesdevelopment.local.php.dist - Gets symlinked as development.local.php when enabling development mode; activates error handlerserror-handling.global.php - Configures and activates error logsgeoip.global.php - Configures the GeoLite2 synchronizer commandlocal.php.dist - Local config file where you can overwrite application name and URLlocal.test.php.dist - Local configuration for functional testsmail.global.php - Mail configuration; e.g. sendmail vs smtp, message configuration, mail loggingmezzio.global.php - Mezzio core config filenavigation.global.php - Configures the top menusession.global.php - Configures the sessiontemplates.global.php - dotkernel/dot-twigrenderer config filedata folderThis folder is a storage for project data files and service caches. It contains these folders:
cache - Twig and Doctrine cache filesgeoip - Holds the GeoLite2 databaseslock - Contains lock files generated by dotkernel/dot-cliAVOID storing sensitive data on the repository!
log folderThis folder stores daily log files.
When you access the application from the browser, (if not already created) a new log file gets created in the format specified in the config/autoload/error-handling.global.php config file under the stream array key.
public folderThis folder contains all publicly available assets and serves as the entry point of the application:
css and js - Contains the CSS and js file(s) generated by the webpack (npm) from the assets folderfonts and images - Contain the font and image file(s) copied by the webpack (npm) from the assets folderuploads - a folder that normally contains admin avatar images.htaccess - server configuration file used by Apache web server; it enables the URL rewrite functionalityindex.php - the application's main entry pointrobots.txt - controls bot access to certain areas of your application; ships ready to use, edit the lines that don't match your environmentsrc folderThis folder contains a separate folder for each Module.
These are the modules included by default:
Admin - Contains functionality for managing users with admin role; note these are users save in the admin database tableApp - Contains core functionality, from authentication, to rendering, to error reportingCore – Contains the shared logic and base infrastructure used across multiple modulesDashboard – Contains the structure and rendering logic of the main admin dashboard, including layout, widgets, and default admin landing pagePage - Contains reusable UI components and layout elements such as dropdowns, modal popups, error displays, and tooltips for the admin interfaceSetting - Contains functionality for saving and reading display settingsUser - Contains functionality for managing users; note these are users save in the user database tableEach Module folder, in turn, should contain the following folders, unless they are empty:
src/Handler - Action classessrc/InputFilter - Validation rules for inputssrc/Service - Service classesThe above example is just some of the folders a project may include, but they should give you an idea about the recommended structure.
Other classes the src folder may include are Adapter, Factory, Form, Delegator etc.
The src folder in each Module folder normally also contains these files:
ConfigProvider.php - Configuration data for the moduleRoutesDelegator.php - Module specific route registrationstemplates folder for modulesThis folder contains the template files, used, for example, to help render e-mail templates.
twigis used as Templating Engine. All template files have the extension.html.twig.
The Core module is a common codebase set up to be used by the applications you added to your project.
These are the submodules included by default:
Admin - Contains logic for the admin submodule featuresApp - Contains shared application-level services and infrastructure utilitiesSecurity - Contains authentication, authorization, and related security mechanismsSetting - Contains configuration and application settings managementUser - Contains user entities, repositories, and services handling user data and logicEach submodule folder should contain:
src/Entity - Used by database entitiessrc/Repository - Entity repository folderConfigProvider.php - Configuration data for the moduleThe above example is just some of the folders a project may include, but they should give you an idea about the recommended structure.
Other classes the src folder may include are DBAL, Enum, Command, Factory etc.
Q: What standard does Dotkernel Admin's file structure follow?
A: It follows the PSR-4 standard.
Q: Where do application configuration files live?
A: In the config folder, with service-related local and global config files under config/autoload.
Q: What does each Module folder typically contain?
A: Folders such as src/Handler, src/InputFilter and src/Service, plus a ConfigProvider.php and a RoutesDelegator.php.
Q: What is the Core module used for?
A: It is a common codebase shared across the applications in your project, containing submodules such as Admin, App, Security, Setting and User, each typically with src/Entity, src/Repository and a ConfigProvider.php.