dbxapp Knowledge Design fundamentals

Design fundamentals

On this page
  1. Concepts and responsibility
  2. List of a special design
  3. Design templates and page variants
  4. Duration: How a design is determined
  5. Frontend and administration
  6. Design and skin selection in the menu
  7. CSS layers
  8. Mandatory structural classes
  9. The Flowers Design
  10. Creating a new design
  11. Checklist
  12. Related documentation

Reference status: 2026-07-26

dbxapp separates technical logic, content and presentation. One Design is a complete application shell with its own HTML, CSS, JavaScript and images. One Skin is a color and contrast variation within a design. This separation allows technically identical sides with very different appearances.

There are currently three independent frontend designs:

Design Characteristic Navigation Skins offered
dbxapp technical, compact, application-oriented horizontal Blue, green, yellow, red, light, dark
Flowers Playful, organic, wood, plants and copper left vertical Blue, green, yellow, red, light, dark
Stealing Stainless steel, chromium, gold and corrugated sheet horizontal Blue, green, yellow, red, light, dark

The configured admin design is dbxapp. A frontend user may change the frontend design. If the horizontal admin menu is displayed in the frontend for administrators, it remains explicitly horizontal and does not replace the vertical Flowers navigation.

Concepts and responsibility

Design

One design is responsible for:

  • the outer HTML structure of the side,
  • Main and admin navigation,
  • header, content surface, footer and window dock,
  • responsive behaviour;
  • typography, abstractions, surfaces and imagery,
  • design-related JavaScript additions,
  • the integration of the offered skins.

A design is responsible not:

  • shop, CMS or user logic,
  • data access and rights verification,
  • storing forms,
  • report pagination or ajax transport,
  • the technical meaning of a module.

Skin

A skin changes within a design above all colors, contrasts, shadows, frames and light / dark behavior. The skin must not rebuild the basic structure of a design. If navigation, columns or page shells are to be different, a separate design is the right level.

Module design

Modules may bring their own component CSS and their own templates, for example:

dbx/modules/dbxShop/design/css/shop.css
dbx/modules/dbxShop/design/js/shop.js
dbx/modules/dbxShop/tpl/htm/product-card-default.htm

This module design only designs the domain edition. The surrounding side continues to come from the active global design under dbx/design/.

List of a special design

One design is under:

dbx/design/{design}/
htm/
default.htm
css/
colors.css
skin-*.css
base.css
theme.css
c-*.css
m-menu.css
js/
img/

htm/default.htm is the prerequisite for a directory to be recognized as a publicly selectable frontend design. Lists with a name that has _ or - starts, are not offered in the design selection.

Each design should own all design-related files themselves. Flowers CSS, images or JavaScript from dbxapp inheritance. Only centralized system and vendor resources are shared, such as Bootstrap, Bootstrap Icons, jQuery and dbx/js/lib/core.js.

Design templates and page variants

The page shell is filled with dbxTPL::get_design_tpl() loaded. The starting point is the active combination of:

  • dbx design: design package,
  • dbx page: side variant,
  • dbx lng: language,
  • dbx color: Skin.

Typical files in the design are:

htm/default.htm normale Seite
htm/intro.htm optionale Einführungsseite
htm/_window.htm reduzierte Fensterschale, wenn vorhanden
htm/_editor.htm Editor-Spezialseite, wenn vorhanden
htm/_install.htm Installationsseite, wenn vorhanden

If a requested page variant does not exist in the active design, the template resolution is conspicuous default.htm back. The current window mechanism uses dbx_window=1 to select the window page variant. A separate adminWin-Variant is not implemented in the current state and must therefore not be assumed.

A minimal default.htm contains at least:

<!doctype html>
<html lang="{dbx:lng}">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>{dbx:title}</title>{dbx:head_meta}
<link rel="stylesheet" href="dbx/vendor/twbs/bootstrap/dist/css/bootstrap.min.css">
<link rel="stylesheet" href="dbx/vendor/twbs/bootstrap-icons/font/bootstrap-icons.css">
<link rel="stylesheet" href="dbx/design/{dbx:design}/css/colors.css">
<link rel="stylesheet" href="{dbx:skin_css}">
<link rel="stylesheet" href="dbx/design/{dbx:design}/css/base.css">
<link rel="stylesheet" href="dbx/design/{dbx:design}/css/theme.css">
</head>
<body class="{dbx:skin_class}"
data-dbx-design="{dbx:design}"
data-dbx-skin="{dbx:color}">
<main id="dbxMain">[dbx:content]</main>
<script src="dbx/vendor/components/jquery/jquery.min.js"></script>
<script src="dbx/js/lib/core.js?design={dbx:design}"></script>
</body>
</html>

The real content marker is [dbx:content. The markers {dbx:skin css, {dbx:skin class, {dbx:design, {dbx:color and {dbx:lng by: dbxTPL replaced.

Optionally, a design shell may contain reusable fragments:

<div class="brand">[dbx:logo][dbx:branding]</div>
<main>[dbx:content]</main>
[dbx:footer]

The content is in the same design htm/logo.htm, htm/branding.htm and htm/footer.htm. dbxTPL It only uses actually used slots. Existing designs without slots remain unchanged.

Duration: How a design is determined

The process is centrally located in dbxWebApp:

  1. check remember() Reading dbx design, dbx color, dbx lng and dbx edit Remember-State and Request.
  2. Request values may overwrite the recorded values.
  3. check design() Validates the design and removes the alignments User and admin against the configuration.
  4. An admin module with admin in the module name switches for administrators default design admin.
  5. design load() selects design and page, sets the module content in [dbx:content Enter and deliver the finished page.
  6. In dbx ajax=1 no new page shell is loaded; Only the module content is returned.

The default values are in dbx/modules/dbx/cfg/config.php:

$config['default_color'] = 'blau';
$config['default_design_user'] = 'dbxapp';
$config['default_design_admin'] = 'dbxapp';

A module or admin tool can be used for its call dbx page, dbx design, dbx lng and dbx color set. Such switches shall be made before loading the design shell and shall not circumvent central validation.

Frontend and administration

The current separation is:

  • Normal frontend pages use the design chosen by the user.
  • dbxShop is a frontend module and therefore runs in the active frontend shell.
  • Modules with the Suffix admin, for example dbxShop adminFor administrators, switch to the configured admin design.
  • The admin menu can also appear in the frontend for logged-in administrators. In the Flowers design, it is output as its own horizontal strip above the actual frontend header.
  • One by Ajax or OpenWin loaded content does not automatically receive a second complete design. The window shell comes from the calling context; Components of the admin content are designed by their module styles.

This allows the frontend and backend to remain visually separable without duplicating module code or requiring an iframe. If later real design isolation in windows is needed, it must be implemented as its own documented window mode.

Design and skin selection in the menu

The selection is in the main menu template:

dbx/modules/dbxMenu/tpl/htm/dbx-top-main.htm

dbxMenu::frontend_design_options() Searched at runtime dbx/design/*/htm/default.htm. This will make a new full design appear without a hardwired list in the menu. Within the selection forms dbxMenu::render_design_skin_menu() A separate group for each design. These include only its own color variants.

The binding skin recognition is centrally located in dbxApi::get_design_skin_ids(). It reads the existing files for each design:

dbx/design/{design}/css/skin-*.css

So there is no second skin list in dbxMenu or utilities.js. A new file such as skin-petrol.css is automatically offered only in the group of the relevant design. dbxApi::normalize_skin() Test dbx color against exactly this catalogue, so that no non-existent style sheet is selected.

Each selection is a normal, copyable GET call with dbx design and dbx color. Thus, design change and pure color change execute the same server-side validated sequence; JavaScript is not required for selection. utilities.js retained applySkin() for programmatic surfaces and stores such local selections per design. The color of one design no longer accidentally overwrites the selection of another design.

CSS layers

A robust division is:

File Responsibility
colors.css Common Design Tokens and Semantic Color Variables
skin-*.css Values for a concrete color/contrast variant
base.css App shell, header, main, footer, navigation, responsive basic structure
theme.css Visual language for panels, forms, reports and windows
glass-3d.css dbxapp effect layer for glass, light, metallic edges and staggered depth
c-*.css Components such as CMS, Form, Grid, Report, OpenWin and Process
m-menu.css Special menu and responsive rules

Skins should preferably overwrite CSS variables. Components access these variables. As a result, a dark variant does not have to copy the entire component library.

In design dbxapp shall be: glass-3d.css after base.css and theme.css involved. The file designs the existing components via the skin tokens and therefore must not introduce its own color world separate from the skin.

Mandatory structural classes

The HTML structure is uniform throughout the system, the visual design remains independent for each design. dbxTPL, dbxForm and dbxReport They produce the same semantic classes:

Category Meaning
.dbx panel External component frame
.dbx panel body padded content area
.dbx bar Base of each head or tool strip
.dbx bar modules Head of a module, form or report
.dbx-bar-editor Editor bar
.dbx-bar--toolbar independent tool bar
.dbx-bar-title Title group with icon and text
.dbx bar copy Text containers within the title group
.dbx bar heading Main visible heading
.dbx bar subtitle Optional second line
.dbx bar actions Right Action Group

A variant always complements the base class, for example class="dbx-bar dbx-bar-module". JavaScript uses domain data dbx *attributes and no representation class as a behavior anchor. Old parallel terms for module, editor or toolbar bars are not allowed. A design may fully determine colors, distances, typography and effects, but must support this structural contract. As a result, templates, forms and reports remain predictable without making designs dependent on each other.

The Flowers Design

Flowers is deliberately not a color copy of dbxapp. Its characteristics are:

  • solid, i.e. left-hand main navigation,
  • wood, plant and copper appearance,
  • organic ornaments and floral icons,
  • an independent top bar and its own footer,
  • a horizontal admin strip for administrators,
  • independent login styling,
  • Light and dark skin,
  • design-related behaviour in dbx/design/flowers/js/flowers.js.

The left navigation must remain scrollable with long or unfolded submenus. drop-downs of the horizontal admin menu must be above the page contents; Stacking is context and z index Part of the design check.

Creating a new design

For administrators, the preferred way is the Design Studio:

?dbx_modul=dbxDesign_admin&dbx_run1=list

The wizard generates an independent copy, queries division, menu form, footer, branding, logo, colors and typography and validates the contract before activation. The manual path remains possible for developers:

  1. Choose a unique, URL-compatible name.
  2. Underground dbx/design/{Name at least htm, CSS, js and img Create.
  3. A complete htm/default.htm with [dbx:contentmenus, footers, vendor dependencies, and core.js create.
  4. Own colors.css, base.css, theme.css Create skin files.
  5. Needed c-*.css and menu rules in the design itself.
  6. Test the design with guest, user and administrator.
  7. Test long main and submenus, small displays and keyboard operation.
  8. Check forms, reports, CMS, login, shop and OpenWin/Ajax.
  9. Only then the design over dbx design ={Name Offering productionly.

Checklist

  • htm/default.htm exists and contains [dbx:content.
  • {dbx:skin css and {dbx:skin class are involved.
  • Body Carried data dbx design and data-dbx-skin.
  • core.js?design ={dbx:design is loaded.
  • The design does not import private files of another design.
  • The main and admin menu are accessible and cover the content correctly.
  • Submenus remain accessible at low altitude.
  • Light/Dark or All skins offered work without unreadable contrasts.
  • Login, CMS, shop, forms, reports, windows and Ajax were checked.
  • Admin modules run in admin design; Frontend pages remain switchable.

Related documentation