function defineAppVars()
    {
        $vars   = [];
        $vars[] = '// App Constants';
        $vars[] = [
            'key'   => 'APP_NAME',
            'label' => 'App Name',
            'value' => defined('APP_NAME') ? APP_NAME : 'Untitled',
        ];

        $vars[] = [
            'key'      => 'APP_DEFAULT_TIMEZONE',
            'label'    => 'App Timezone',
            'value'    => defined('APP_DEFAULT_TIMEZONE') ? APP_DEFAULT_TIMEZONE : date_default_timezone_get(),
            'validate' => function ($sInput) {
                return in_array($sInput, timezone_identifiers_list());
            },
        ];

        $vars[] = [
            'key'   => 'APP__KEY',
            'label' => 'App  Key',
            'value' => defined('APP_PRIVATE_KEY') && !empty(APP_PRIVATE_KEY) ? APP_PRIVATE_KEY : md5(rand(0, 1000) . microtime(true)),
        ];

        $vars[] = [
            'key'   => 'APP_DEVELOPER_EMAIL',
            'label' => 'Developer Email',
            'value' => defined('APP_DEVELOPER_EMAIL') ? APP_DEVELOPER_EMAIL : '',
        ];

        $vars[] = [
            'key'   => 'APP_DB_PREFIX',
            'label' => 'Prefix for app database tables',
            'value' => defined('APP_DB_PREFIX') ? 'app_' : '',
        ];

        // --------------------------------------------------------------------------

        //  Any constants defined by the components?
        $componentVars = $this->getConstantsFromComponents('APP', $vars);
        $vars          = array_merge($vars, $componentVars);

        // --------------------------------------------------------------------------

        //  Any other constants defined in app.php?
        $appFile = $this->getConstantsFromFile('config/app.php', $vars);
        $vars    = array_merge($vars, $appFile);

        // --------------------------------------------------------------------------

        return $vars;
    }