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.