Skip to main content


mDIS Top-Level Directory Structure


The application structure is similar to a Vue project created by the vue-cli with the command vue create <app name>. There are two remarkable differences: an extra backend directory that contains Yii2 code, and the dist folder that contains the build version, which was renamed to web.

+-- backend                 Yii2 Code (Server Side / API)
|   +-- assets/              Assets definition
|   +-- behaviors/           Special-purpose calculations, e.g., IGSN, AutoIncr
|   +-- bin/                 Command line scripts (e.g., for auto printing reports)
|   +-- commands/            Yii console commands (controllers)
|   +-- components/          Several components and helpers used elsewhere
|   +-- config/              Application configurations (web, db backends, igsn, ldap, ...)
|   +-- controllers/         Web controller classes
|   +-- data/                Uploaded files (associated with the database table `archive_file`)
|   +-- dis_migration/       Migration classes for Legacy DIS import
|   +-- dis_templates/       JSON files defining models and forms as JSON files
|       +-- defaults/        Default models and forms
|       +-- forms/           Customized form templates (initially copied from defaults/forms)
|       +-- models/          Customized model templates (initially copied from defaults/models)
|   +-- forms/               Form PHP classes
|   +-- models/              Model PHP classes that can be customized
|       +-- base/            Base model PHP classes (two-way data bindings) automatically generated from the template manager
|       +-- core/            Core model PHP classes
|   +-- modules/             Modules (Code Generator as an example)
|       +-- api/             REST API used from the frontend and elsewhere to access data
|       +-- cg/              Code generator to create PHP model and Vue form files
|   +-- rbac/                Specializations for user and rights management
|   +-- reports/             Report, export, and action scripts called from forms
|   +-- resources/           Overridden data model classes for the API (User.php)
|   +-- runtime/             Files generated during runtime (cache, logs, debug info, etc.)
|   +-- vendor/              Dependent 3rd-party PHP packages
|   +-- views/               View files for the web application
|   +-- widgets/             General-purpose components (Alert.php)
+-- public                   Public static assets (index.html, index.php, favicons)
+-- src                      Vue source code
|   +-- assets               Logos, etc.
|   +-- components           Display components and input components
|   +-- forms                Input forms generated from the template manager or customized
|   +-- mixins               Input validators (not really components or screens)
|   +-- pages                Screens: Login, CoreSection, Dashboard
|   +-- plugins              User interface components, like vuetify.js
|   +-- services             BackendService (Auth), CrudService (data manipulation), etc.
|   +-- store                State management like: is logged in, isDark, snackbar, ...
|   +-- style                Stylus directives, will be compiled to CSS
|   +-- util                 Utility JavaScripts
+-- tests                    Frontend tests
+-- web                      Output folder for command `npm run build` + customized logos, etc.