Discover powerful Dolibarr extensions designed to automate your business processes

PreSkool is a complete theme module for Dolibarr ERP/CRM. It is not a CSS skin: a CSS-only theme can recolour Dolibarr but cannot rebuild its navigation. PreSkool replaces the whole back-office chrome — a white sectioned sidebar, a top bar with global search, and a purpose-built dashboard — while leaving the Dolibarr core untouched. Every screen of every installed module inherits the new look automatically, because the theme redefines the core CSS variables rather than restyling pages one by one.
The visual language reproduces the supplied PreSkool design: an indigo primary (#3D5EE1), a near-black ink banner, soft-tinted icon chips, rounded cards and generous spacing. Colours were sampled pixel by pixel from the reference image rather than estimated by eye.
|
Property |
Value |
|
Commercial name |
PreSkool |
|
Folder / technical name |
preskool / theme_preskool |
|
Package |
module_PreSkool-1.0.zip |
|
Module id (numero) |
10000160 |
|
Version |
1.0 |
|
Editor |
DoliResources — https://www.doliresources.com |
|
Licence |
GPL-3.0-or-later |
|
Dolibarr range |
16.0 → 23.x and later |
|
PHP floor |
7.0 |
|
Languages |
English, French, Spanish, German, Italian, Portuguese (BR), Dutch |
· One visible surface: containers stay transparent and the clickable row itself carries the styling — no card inside a card.
· Clear active state: the selected menu entry is a light indigo tile with primary-coloured text, exactly as in the design.
· Data before decoration: every KPI is a real database aggregate, and every tile links to a list filtered to the same scope.
· Never an empty box: a panel with no data renders an explanatory empty state, not a blank rectangle.
· Accessibility: the operating system 'reduced motion' preference is always honoured.
The dashboard replaces the Dolibarr home page. It opens on a dark ink welcome banner, followed by four KPI tiles, a turnover chart, a commercial pipeline donut, and activity panels.
· KPI tiles — turnover, unpaid invoices, new customers and orders, each with a period-over-period variation badge and an inline sparkline.
· Tile footer — every tile breaks its own population down (Paid / Unpaid, Overdue / Due soon, Customers / Prospects, Ongoing / Drafts). The two figures always belong to the tile above them.
· Period selector — week, month or year; the whole page, including the tile links, follows the selection.
· Turnover chart — current year against the previous one, drawn as inline SVG (no charting library, no external request).
· Pipeline donut — commercial proposals by status, with a clickable legend.
· Recent activity and latest invoices, rendered with Dolibarr's native object links and hover tooltips.
The sidebar is generated from Dolibarr's own menu tree, so every installed module — including third-party ones — appears automatically with its icon, its children and its permissions.
· Collapsible groups with in-place accordions; a group opens only when it genuinely holds the active item.
· Module search box to filter the navigation.
· Favourites and a 'recently opened' section, both optional and capped by configuration.
· Desktop rail: the sidebar folds to an icon rail; on phones it becomes an off-canvas drawer.
· The active entry is resolved by a level-encoded identifier, not by URL, so two modules sharing a landing URL cannot light each other up.
· Global search that queries third parties, invoices and products from a single field.
· Light/dark toggle, applied before first paint so a reload never flashes the wrong theme.
· The native Dolibarr login block is preserved — multi-company selector, print, help and user menu — and only restyled.
Because the theme redefines the core CSS variables, native Dolibarr screens follow the palette without being individually restyled. Lists, cards, tabs, inputs, select2 dropdowns, badges and action buttons all inherit the new tokens in both light and dark mode.
The configuration screen is grouped into sections rather than a single flat table.
|
Setting |
Effect |
|
Preset palette |
PreSkool, Ocean, Emerald, Violet, Sunset, or Custom |
|
Primary / accent / ink colours |
Used when the palette is set to Custom |
|
Success / danger / warning colours |
Status colours across the whole application |
|
Corner radius, base font size |
Global geometry and typography |
|
Inter web font |
Turn off to use the system font — no external request at all |
|
Dark mode by default |
Initial theme for users who never toggled it |
|
Layout width |
Full width, or fixed and centred on large monitors |
|
Interface animations |
Disable hover lifts and transitions |
|
Menu width, favourites, recents |
Sidebar behaviour and caps |
|
Turnover basis (excl./incl. tax) |
Feeds the KPI, the chart and the tile links consistently |
Soft tints are computed from the selected colour, so switching palette keeps chips, badges and hover states coherent. The defaults on this screen are identical to the defaults compiled into the stylesheet, so 'Reset' restores exactly the shipped look.
|
Breakpoint |
Behaviour |
|
≥ 1200 px |
Full sidebar (258 px, configurable) and multi-column dashboard |
|
760 – 1200 px |
Sidebar foldable to an icon rail; grids reflow to two columns |
|
< 760 px |
Off-canvas drawer opened by the burger; single-column stack |
Absence of horizontal scrolling is verified programmatically at 390 px (document.scrollWidth compared with window.innerWidth), not judged from a screenshot.
|
File |
Role |
|
core/modules/modPreskool.class.php |
Module descriptor; forces the menu manager, cache-busts assets |
|
core/menus/standard/preskool_menu.php |
Menu manager; renders the sidebar |
|
core/menus/standard/preskool.lib.php |
Sidebar builder and helpers |
|
class/actions_preskool.class.php |
Hooks: home redirect, pre-paint state script, print mode |
|
css/preskool.css.php |
All styling: design tokens, core variable override, chrome |
|
js/preskool.js.php |
Theme toggle, collapse, drawer, accordions, top bar injection |
|
index.php / search.php |
Custom dashboard and global search results |
|
admin/setup.php |
Configuration screen |
|
langs/*/preskool.lang |
Seven translation files, strict key parity |
The stylesheet and script are dynamic PHP files so they can read the configuration and the current language. Asset URLs carry a revision parameter that is bumped when the module version changes, so users pick up a new release on an ordinary reload.
· Home → Setup → Modules → Deploy external module, and upload module_PreSkool-1.0.zip.
· Enable 'PreSkool' in the Interfaces family.
· Optional: open the configuration screen to pick a palette or adjust the layout.
· If the sidebar does not appear immediately, disable and re-enable the module once so the menu registration constant is written.
Only one theme module may be active at a time: two of them would compete for the same forced-menu constant. Disable any other theme module before enabling PreSkool.
· No charting or UI framework: charts are inline SVG, so there is no vendor bundle to download.
· With the web font disabled the theme issues no external request whatsoever.
· Stylesheet and script are served with a one-hour cache and a version-based cache-buster.
· Browsers: current Chrome, Firefox, Safari and Edge.
· Core APIs used were checked for identical signatures from Dolibarr 16.0 to develop.
|
Check |
Result |
|
PHP lint on every file |
Clean |
|
Browser QA, 8 desktop pages |
0 failure |
|
Horizontal overflow at 390 px |
None on any tested page |
|
JavaScript console errors |
None |
|
Untranslated keys rendered |
None |
|
Translation key parity (7 files) |
154 keys, identical names |
|
Dark mode token switch |
Verified |
All screenshots ship in the Screenshots folder, captured at 2× or 3× pixel density.
|
File |
Content |
|
01_login.png |
Login page |
|
02_tableau_de_bord.png |
Dashboard |
|
03_menu_principal.png |
Sidebar with groups expanded |
|
04_liste_tiers.png / 05_fiche_tiers.png |
Third-party list and record |
|
06_produits.png |
Products |
|
07_devis.png / 08_commandes.png |
Quotations and orders |
|
09_factures.png / 10_fiche_facture.png |
Invoice list and record |
|
11_stocks.png / 12_projets.png / 13_agenda.png |
Stock, projects, calendar |
|
14_formulaire_tiers.png |
Creation form |
|
15_configuration.png |
Theme configuration |
|
16_recherche.png / 17_modules.png / 18_utilisateurs.png |
Search, modules, users |
|
19–20_tablette_*.png |
Tablet, 820 px |
|
21–23_mobile_*.png |
Phone, 390 px |
· Reskins the entire application, including third-party modules, with no core modification.
· Light and dark handled by a single token block — no duplicated stylesheet.
· Configurable without touching code; palettes ship ready to use.
· Dashboard figures come from the database and link to lists filtered identically.
· User-level theme preferences in addition to the global default.
· A dashboard widget picker so each user can compose their own KPI set.
· Additional preset palettes and an import/export of the configuration as JSON.
· An explicit dark-mode toggle in the configuration screen alongside the existing default.
© 2026 DoliResources — https://www.doliresources.com