Discover powerful Dolibarr extensions designed to automate your business processes
Couldn't load pickup availability

1. Executive Summary
DoliSmart is a premium administration theme for Dolibarr ERP/CRM. It replaces the standard back-office appearance with a calm, dense and highly readable interface built around a white full-height sidebar, a flat white top bar carrying a global search, a near-white canvas and white cards separated by a hairline border rather than by heavy shadow. A vivid orange accent and a petrol blue carry the interactive and structural meaning; the remaining hues form a status palette used by the KPI icon discs, the badges and the gauges.
DoliSmart is delivered as a Dolibarr module rather than as a CSS theme. A stylesheet alone can only recolour the markup Dolibarr already emits; it cannot build a structured navigation rail, a global search bar or a KPI dashboard. Shipping as a module gives DoliSmart access to the official extension points - module_parts for assets, the menu-manager constants for the sidebar, and hooks for the home page and the document head - while leaving every Dolibarr core file untouched.
The centrepiece is an administrator dashboard reproducing a complete operations cockpit: eight KPI tiles, a staff distribution chart, a workforce status bar, a half-donut attendance gauge, a clock-in/out list, a recruitment panel, a people directory, a to-do list, a twelve-month sales chart, an invoice list, a projects table, a task-statistics gauge, a schedule panel, an activity timeline and a birthday panel. Every figure is read from real Dolibarr tables. No value on the dashboard is simulated.
2. Theme Overview
|
Property |
Value |
|
Commercial name |
DoliSmart |
|
Technical name |
theme_dolismart |
|
Module folder |
dolismart |
|
Module class |
modDoliSmart |
|
Module number |
10000600 |
|
Version |
1.0.0 |
|
Family |
Interface |
|
Editor |
DoliResources |
|
Licence |
GNU GPL v3 or later |
|
Minimum Dolibarr |
16.0 |
|
Minimum PHP |
7.0 (PHP 8.x supported) |
|
Languages |
English, French, Spanish, Italian, German, Dutch, Portuguese (BR) |
|
External dependencies |
None (the web font is optional and can be disabled) |
DoliSmart ships one carefully tuned design. Earlier theme products in this range offered several interchangeable demos; experience showed that a single design taken to a high level of finish serves customers better than several half-finished ones, and the configuration screen still exposes ten colour palettes, seven sidebar modes, six top-bar styles and five layouts on top of it.
3. Design Objectives
· Reproduce the visual identity of the reference design faithfully: white sidebar, white top bar, near-white canvas, compact white cards, orange accent, petrol blue, coloured icon discs, status badges and a grid layout.
· Stay a GENERAL-PURPOSE ERP theme. The reference design is HR-flavoured, but DoliSmart must serve a distributor, a consultancy and a workshop equally well.
· Show only real data. Every widget reads a Dolibarr table; a widget with no source hides itself rather than display a placeholder.
· Remain dense but readable, suitable for a full working day in front of the screen.
· Change nothing in the Dolibarr core, so upgrades stay routine.
· Be fully configurable, so a customer can match the theme to their own brand without editing a single file.
4. UI/UX Philosophy
Colour carries meaning, never decoration
The interface is deliberately quiet. Orange marks what the user can act on - primary buttons, the active menu entry, progress fills, the links under each KPI. Petrol blue marks structure. The status palette (green, amber, red, blue, pink, purple) is reserved for state: paid versus overdue, on time versus late, completed versus pending. Nothing is coloured to be pretty.
Never rely on colour alone
The active sidebar entry is marked by a coloured left bar as well as by its tint. Status badges carry a word, not just a hue. Variation chips carry an arrow as well as a colour.
State the truth, including when it is inconvenient
Two rules govern every figure. First, both sides of a ratio must span the same population. Second, a value computed on an unrepresentative slice of the data is not a small truth but a wrong headline: the gross-margin tile therefore refuses to quote a figure when fewer than five per cent of the period's invoiced lines carry a cost price, and says so instead.
5. Dashboard Overview
The dashboard is laid out top to bottom as follows.
|
Band |
Content |
|
Page head |
Title, breadcrumb, export button, week/month/year period selector |
|
Welcome banner |
Avatar, greeting, pending approvals and leave requests (both clickable), Add schedule and New request actions |
|
KPI band |
Eight KPI tiles plus the staff distribution chart |
|
Workforce band |
Workforce status, attendance gauge, clock-in/out |
|
People band |
Recruitment, people directory, to-do list |
|
Commercial band |
Twelve-month sales chart, recent invoices |
|
Delivery band |
Projects table, task-statistics gauge |
|
Activity band |
Schedules, activity timeline, birthdays |
The period selector drives every dated figure on the page and is carried into the list links, so clicking a tile lands on a Dolibarr list filtered to exactly the same scope - the list total then matches the figure that was clicked.
6. KPI Cards
Each tile carries an icon disc, a label, a main value, an optional variation or rate chip, and a link to the underlying Dolibarr list.
|
Tile |
Meaning |
Source |
|
Attendance today |
Present vs total workforce, with today's rate |
llx_events (connection log), llx_user |
|
Open projects |
Open vs total projects |
llx_projet |
|
Active customers |
Customers invoiced in the period vs all customers |
llx_facture, llx_societe |
|
Tasks completed |
Completed vs total tasks |
llx_projet_task |
|
Turnover |
Invoiced over the period, with period-over-period variation |
llx_facture |
|
Gross margin |
Sales minus cost on lines carrying a cost price |
llx_facturedet |
|
Applicants |
Candidates recorded |
llx_recruitment_recruitmentcandidature |
|
New hires |
Hired this month vs this year |
llx_user.dateemployment |
A variation chip is only shown when a comparable previous period exists. When the previous period is empty the chip is omitted altogether rather than printing a meaningless plus one hundred per cent. A rate - such as today's attendance - is rendered in a neutral chip with no arrow, because a rate is not a trend.
7. HR Dashboard Features
Dolibarr is a general ERP and records no organisational department, no contract type and no time clock. Rather than invent those concepts, DoliSmart maps each HR widget onto the native column that carries the equivalent business meaning, and names the widget after what it actually measures.
|
Reference widget |
DoliSmart widget |
Native source |
|
Employees by department |
Staff by job title |
llx_user.job |
|
Employee status |
Workforce status |
llx_user.dateemployment / dateemploymentend / fk_soc |
|
Attendance overview |
Attendance overview |
llx_events (USER_LOGIN) |
|
Clock-in/out |
Clock-in / clock-out |
llx_events |
|
Jobs applicants |
Recruitment |
llx_recruitment_* (native module) |
|
Birthdays |
Birthdays |
llx_user.birth |
When too few users carry a job title for the distribution chart to mean anything, the widget falls back to turnover by salesperson and changes its own title and footnote accordingly, so it can never mislabel what it is showing.
8. Attendance Features
Dolibarr has no time clock, but it records every authentication in llx_events - which is exactly a clock-in. The attendance gauge splits the workforce into four mutually exclusive buckets that sum to the total, so the percentages add up to one hundred and the attendance rate is meaningful.
|
Bucket |
Definition |
|
On time |
First login of the day at or before the reference start hour |
|
Late |
First login after it (configurable, default 09:30) |
|
On leave |
An approved holiday covering the day, for someone who did not log in |
|
Absent |
The rest of the workforce |
Someone who worked is counted present whatever their calendar says, which is why the leave bucket explicitly excludes anyone who authenticated that day.
9. Employee Management Widgets
Workforce status
A stacked distribution bar plus four figures with their percentages, over four mutually exclusive buckets: Permanent, Fixed term, Onboarding (hired within ninety days) and External (users attached to a third party). A Top performer card names the salesperson with the highest invoiced turnover and states their share of the company total - not their share of the best performer's turnover, which would be one hundred per cent by construction.
People directory
A compact list of the workforce, most recently active first, with avatar, name, e-mail and a colour-coded job title, each row linking to the user card. Real user photographs are used when present; otherwise initials are drawn on a plate whose hue is derived from the name, so a colleague always keeps the same colour.
10. Recruitment Widgets
The recruitment panel reads Dolibarr's native recruitment module. It offers two tabs - Openings and Applicants - and counts candidates by status (new, interview, hired, refused). Open positions show the number of posts to fill, the planned date and the suggested remuneration; candidates show their target position and a status badge.
When the recruitment module is not enabled the whole panel is omitted from the page, and the Applicants KPI tile states that the module is disabled rather than showing a zero that would read as "no candidates".
11. Project Management Widgets
The projects table lists open projects with their reference, title, team, hours, deadline and priority.
· Team - the project's internal contacts, drawn as stacked avatars with a +N overflow marker. Dolibarr has no owner column on a project: the responsible user is an internal contact of type PROJECTLEADER, with the project creator as fallback.
· Hours - consumed against planned, from the sum of the tasks' planned workload and effective duration, with a thin progress bar underneath.
· Deadline - the project end date; a project without one is given no false date.
· Priority - derived from the time remaining: overdue or within a week is high, within a month is medium, beyond that is low.
12. Task Management Widgets
Task statistics gauge
An open donut over four mutually exclusive buckets that cover every task: Completed, Overdue, Ongoing and Not started. A dark strip beneath states the hours booked over the last seven days against the planned workload. Those hours come from the time sheets (llx_projet_task_time), not from the tasks' own duration field, so they reflect what was actually recorded.
To-do list
Unfinished agenda events assigned to the current user or to nobody in particular, soonest first, with overdue items highlighted. The panel is backed by llx_actioncomm, so completing an item here is the same action as completing it in the agenda - there is no parallel, private task store to fall out of sync.
13. Sales and Finance Widgets
The sales chart shows twelve monthly pairs: invoiced income and supplier-invoiced expenses. The window always covers the last twelve months ending on the current one, never January to December of the current year - otherwise the chart is nearly empty every January and a reader mistakes it for missing data.
The turnover basis is configurable: amounts excluding or including tax, and whether abandoned invoices count. The same definition drives the turnover tile, the chart and the top-performer ranking, so the three can never disagree.
Gross margin is computed only over invoice lines that carry a cost price. A missing cost is unknown, not zero: including those lines would report a margin close to one hundred per cent. The tile states what share of the turnover its figure covers, and refuses to quote a margin at all below five per cent coverage.
14. Invoice Widgets
The invoice panel lists the most recent customer invoices with the customer, reference, date, amount and a status badge.
|
Badge |
Condition |
|
Paid |
The invoice is settled |
|
Overdue |
Open and past its due date (date_lim_reglement) |
|
Unpaid |
Open and not yet due |
|
Draft |
Not validated |
|
Abandoned |
Closed as abandoned |
Lateness is decided on the DUE date, not on the invoice date, and only for invoices that are genuinely still open.
15. Sidebar Features
The sidebar is a Dolibarr menu manager, not a static list. It is filled from the native menu tree, so it automatically reflects the modules that are enabled, the user's permissions, the entity restrictions and any menu entry added by another module.
· Brand row with the DoliSmart mark, replaced by the customer's square logo as soon as one is configured
· Menu filter box, to jump to an entry by typing
· Uppercase section captions and per-entry icons
· Foldable sub-menus (accordion), with the open branch remembered
· Active entry marked by both a tint and a coloured left bar
· Favourites, with one-click add of the current page
· Recently opened pages, stored in the browser only
· Collapsible mini rail, remembered across reloads and applied before first paint
· Internal scrolling, so a long menu never pushes the page
· Off-canvas drawer with a backdrop below 760 pixels
16. Topbar Features
A flat white bar, fixed to the top of the viewport, carrying the sidebar toggle, the global search field with its keyboard-shortcut chip, the dark-mode toggle and Dolibarr's own login block - the entity selector, print, help and user menu are preserved rather than reimplemented, so multi-entity installs and future Dolibarr additions keep working untouched. The bar can be set to light, dark, gradient, coloured or transparent from the configuration screen.
17. Global Search
The search field is focused with Ctrl+K or Ctrl+/ from anywhere in the application. Results are grouped by object type and rendered with an icon, the type, the reference, the label and a direct link, with the search term highlighted. The search spans third parties, contacts, products and services, proposals, orders, invoices, projects and users, honouring the current user's read permissions on each object type.
18. Widgets Configuration
The dashboard composition is driven by the modules that are enabled and by the configuration screen. Panels whose source module is disabled disappear entirely; the quick-action row, the favourites section and the recently-opened section can each be switched off; the KPI card style, the turnover basis and the number of remembered pages are configurable. Dolibarr's own native widgets can be shown or hidden on the theme's home page.
19. Charts and Data Visualization
Every chart is drawn as inline SVG or as CSS boxes. No charting library is loaded: the entire theme adds no JavaScript dependency at all, which keeps the page weight low and removes a class of version-conflict problems with other modules.
· Half-donut attendance gauge, with a title element per segment for hover detail and an ARIA label summarising the whole
· Open donut for task statistics, with the legend in the gap
· Horizontal bar chart for the staff distribution
· Twelve-month grouped column chart for income against expenses, scrolling inside its own card on narrow screens
· Stacked distribution bar for the workforce split
· Thin progress bars for project hours
20. Tables and Lists
Dolibarr's native lists are restyled rather than replaced, so filtering, sorting, pagination, multi-selection, mass actions, the column selector and export all keep working exactly as the user already knows them. The theme supplies clear uppercase headers, compact rows, a hover state, coloured status badges, avatars and a hairline separator, and wraps wide tables in their own horizontal scroller so the page itself never scrolls sideways.
21. Forms
Text, numeric, search, date, time and monetary fields, select lists, checkboxes, radio buttons, switches, autocompletes, file attachments and text areas are restyled consistently, with a clear focus ring and readable error and success messages. The markup is Dolibarr's own, so native validation, mandatory-field marking and the select2 widgets keep behaving as before.
22. Login Pages
The login screen is restyled into a split layout: a branded panel carrying the DoliSmart mark, a headline and a gradient illustration on one side, and the sign-in card on the other. Identifier, password, remember-me, forgotten password, the language selector and error messages are all Dolibarr's own fields, only restyled. The dark variant applies the same treatment on a dark surface.
23. Responsive Design
|
Breakpoint |
Behaviour |
|
Above 1400 px |
Four KPI tiles per row, three-column widget bands |
|
1200 - 1400 px |
Two KPI tiles per row |
|
900 - 1200 px |
Widget bands drop to two columns |
|
760 - 900 px |
Widget bands stack to one column |
|
Below 760 px |
Sidebar becomes an off-canvas drawer, top-bar search hides, actions go full width |
|
Below 460 px |
One KPI tile per row |
Every grid track is declared as minmax(0, 1fr). A track declared with a pixel minimum cannot shrink below it, which is the usual cause of a page that scrolls sideways on a phone even though each card looks correct. Wide content - tables and the twelve-month chart - scrolls inside its own card.
24. Dark Mode
Dark mode is a genuine dark surface family, not the light theme with a filter over it. A warm hue at low opacity over a dark navy turns brown, so in dark mode the soft tints are dropped: the colour moves into the icon disc and the figure, and the tile keeps the plain card surface.
It covers the sidebar, the top bar, the canvas, cards, widgets, tables, forms, dropdowns, modals, notifications and the login page. It can be toggled from the top bar - the choice is stored per browser and applied before the first paint, so a reload never flashes the wrong theme - set as the default in the configuration screen, or left to follow the operating system.
25. Theme Configuration
The configuration screen is reached from Home, Setup, Modules, DoliSmart, Configure. Settings are grouped into Design, Colours, Layout, Sidebar and top bar, and Dashboard.
|
Group |
Settings |
|
Design |
The active design, dark mode by default |
|
Colours |
Ten palettes plus a custom primary/accent pair; success, warning and danger colours; an optional custom gradient |
|
Layout |
Card radius, font family, base font size, web-font loading, shadows, borders, animations, content layout (five options) |
|
Sidebar and top bar |
Sidebar mode (seven options), sidebar width, top-bar style (six options) |
|
Dashboard |
KPI card style, quick-action row, favourites, recently-opened and its size, turnover basis, abandoned invoices, native widgets, home-page redirect |
A Restore defaults button resets every setting. Values are stored as Dolibarr constants scoped to the current entity, so a multi-entity install can give each entity its own appearance.
26. User Preferences
Three preferences belong to the person rather than to the installation and are therefore stored in the browser, not in the database: the light/dark choice, whether the sidebar is folded, and the list of recently opened pages. They are applied by a small script in the document head before the first paint, so a reload lands directly in the right state with no visible flash. An administrator default applies only when the user has expressed no preference.
27. Accessibility
· A visible focus ring on every interactive surface, including the chart columns
· Full keyboard navigation; the search field has a documented shortcut
· ARIA labels on the gauges, the navigation and the period selector; aria-current on the active period
· The active menu entry marked by a coloured bar as well as by colour, so the state does not depend on colour perception
· Status badges carry a word, not only a hue
· Touch targets sized for a finger on small screens
· prefers-reduced-motion honoured: all animation and smooth scrolling are disabled
· The search submit button is hidden visually but kept in the accessibility tree, so screen-reader and keyboard users retain a submit control
Contrast was designed against WCAG 2.1 AA for body text, headings and badges. A full automated audit across every Dolibarr page was not performed - see Limitations.
28. Performance Optimization
· No JavaScript library and no charting library: charts are inline SVG and CSS boxes
· One stylesheet and one script, both generated by PHP and served with a cache header; a version change bumps Dolibarr's asset revision so users pick up the new files on a normal reload rather than a hard refresh
· The brand mark is a 1 KB SVG; no bitmap is shipped
· The web font is optional and can be switched off, after which no remote asset is requested at all
· Every dashboard query is a single aggregate; nested queries inside an open cursor are avoided, and the team and participant lookups run after the main cursor is freed
· Widgets belonging to a disabled module are never queried
29. Security Considerations
· Every dashboard link points at a native Dolibarr page, which applies its own permission check; the theme grants no access of its own
· All output is escaped with dol_escape_htmltag()
· Configuration values that reach a CSS declaration are validated against a strict character whitelist rather than merely escaped, so a stray brace cannot close the rule and inject arbitrary CSS
· Forms use Dolibarr's own token mechanism, validated by main.inc.php
· Request parameters are read through GETPOST with an explicit type
· No secret, credential or API key is stored in the module
· No Dolibarr core file is modified, and no file outside the module folder is written
· The demo seeder runs only on a platform explicitly flagged as a demo
30. Dolibarr Integration
|
Extension point |
Purpose |
|
module_parts['css'] / ['js'] |
Inject the stylesheet and script on every page |
|
MAIN_MENU_*_FORCED constants |
Install the sidebar menu manager |
|
Hook main (setContentSecurityPolicy) |
Redirect the home page to the dashboard |
|
Hook addHtmlHeader |
Pre-paint script, print view |
|
config_page_url |
The configuration screen |
|
langfiles |
The seven translation files |
The sidebar is populated by calling Dolibarr's own menu generation, so every module's entries, every permission rule and every entity restriction are honoured without the theme knowing anything about them. Disabling the module clears only the constants that still point at DoliSmart's own menu manager, so it can never strip the menu from another theme that has taken over in the meantime.
31. Dolibarr Compatibility
The descriptor declares compatibility from Dolibarr 16.0 upward. Development and verification were carried out on Dolibarr 17.0.3 with PHP 8. The theme uses only long-standing extension points and no API introduced after version 16.
The brief asked for Dolibarr 20 and 21. Those versions were not available on the build machine and compatibility with them has NOT been verified - see Limitations for the manual procedure to confirm it.
Multi-entity installs are supported: every setting is stored per entity and every query filters on getEntity(). Right-to-left languages inherit Dolibarr's own RTL handling; this was not separately verified.
32. Browser Compatibility
The stylesheet uses flexbox, CSS grid, custom properties and inline SVG, all supported by every current browser. The one modern feature used - color-mix() for the badge tints - is guarded by an @supports fallback, so a browser without it still renders a legible badge on a neutral background.
Verification was performed on Chromium 148. Firefox, Edge and Safari were NOT tested on this machine - see Limitations.
33. Technical Architecture
One source of truth for the design
core/dolismart_presets.php resolves the complete design - palette, surfaces, sidebar and top-bar treatment, radius, font - into a single array, applying the administrator's overrides on top of the shipped defaults. The stylesheet, the dashboard, the sidebar renderer and the configuration screen all read that same array, so the configuration screen's defaults and the stylesheet's defaults are the same values by construction and cannot drift apart.
One function per widget
core/dolismart_dashdata.php holds one function per widget. It never prints and never bootstraps Dolibarr, so it can be included from the dashboard and from the dynamic assets alike. Every function guards its divisions, tests isModEnabled() before touching a module's tables, and logs a failed query with dol_syslog() before returning an empty set - so an empty panel is never silently confused with an absence of data.
34. Folder Structure
|
Path |
Contents |
|
admin/setup.php |
Configuration screen |
|
class/actions_dolismart.class.php |
Hooks: home redirect, document head, print view |
|
class/dolismart_demo.class.php |
Demo dataset seeder and purge |
|
core/dolismart_presets.php |
Design tokens - single source of truth |
|
core/dolismart_dashdata.php |
Dashboard data layer, one function per widget |
|
core/menus/standard/ |
Sidebar menu manager |
|
core/modules/modDoliSmart.class.php |
Module descriptor |
|
css/dolismart.css.php |
Dynamic stylesheet: tokens, native restyle, components |
|
js/dolismart.js.php |
Dynamic script: chrome injection, theme, search, favourites |
|
img/dolismart-mark.svg |
Original brand mark |
|
langs/ |
Seven translation files |
|
index.php |
Administrator dashboard |
|
search.php |
Global search results |
35. Installation Guide
· Check the prerequisites: Dolibarr 16.0 or later, PHP 7.0 or later.
· Install module_dolismart-1.0.zip from Home, Setup, Modules, Deploy an external module - or copy the dolismart folder into htdocs/custom/.
· Enable DoliSmart in the module list, family Interface.
· The sidebar, top bar and dashboard apply immediately; no theme selection step is needed, because DoliSmart is a module and not a theme folder.
· Open Home, Setup, Modules, DoliSmart, Configure to adjust the palette, layout and dashboard options.
· Optional: upload a square company logo in Home, Setup, Company, so the sidebar shows the customer's brand instead of the DoliSmart mark.
36. Upgrade Guide
· Back up the database and the htdocs/custom/dolismart folder.
· Deploy the new archive over the existing folder, or replace the folder.
· Disable and re-enable the module so the descriptor runs again.
· Re-enabling bumps Dolibarr's asset revision, so users load the new stylesheet and script on a normal reload; no hard refresh and no cache clearing is required.
· Configuration constants are preserved across an upgrade; nothing needs to be reconfigured.
37. Customization Guide
Most customisation is done from the configuration screen and needs no code. To go further:
· Colours, radius, fonts and surfaces: edit the single preset array in core/dolismart_presets.php. Every consumer reads from there.
· A new dashboard widget: add one function to core/dolismart_dashdata.php following the conventions documented at the top of that file, then render it in index.php.
· Component styling: the component section of css/dolismart.css.php is organised by widget and uses only the design tokens, never literal colours.
· Never edit the generated language files: edit gen_lang.py and regenerate, so a wording fix cannot land in one language and rot in the other six.
38. Translation System
Every user-visible string goes through Dolibarr's translation system. The theme ships seven language files - English, French, Spanish, Italian, German, Dutch and Brazilian Portuguese - each holding 255 keys.
All keys are prefixed DoliSmart. Dolibarr merges every active module's translations into a single table where the last loaded value wins, so an unprefixed generic key silently renders another module's wording. The files are generated from one table by gen_lang.py, which refuses to build if a key is unprefixed, a value is empty, a value contains a literal percent sign (which would make Dolibarr's sprintf-based translator raise a fatal error), or the placeholder count differs between languages.
Adding a language is a matter of adding one column to that table and one entry to the language list.
39. Screenshots Description
The Screenshots folder of this package contains the captures listed below, produced against a live Dolibarr 17.0.3 install carrying the demonstration dataset. All figures visible in them are real values read from the database.
|
File |
Contents |
|
Dashboard/01_dashboard.png |
The administrator dashboard, light mode |
|
Dashboard/02_dashboard_week.png |
The same dashboard on the weekly period |
|
Dashboard/03_setup.png |
The configuration screen |
|
CRM/04_thirdparties.png |
Third-party list |
|
Finance/05_invoices.png |
Customer invoice list |
|
Projects/06_projects.png |
Project list |
|
Projects/07_tasks.png |
Task list |
|
HR/08_users.png |
User list |
|
HR/13_recruitment.png, 14_candidates.png |
Job positions and candidates |
|
Dark/20_dark_dashboard.png |
The dashboard in dark mode |
|
Tablet/30_tablet_dashboard.png |
Tablet layout, 1024 px |
|
Mobile/31_mobile_dashboard.png |
Phone layout, 414 px |
40. Advantages
· A complete operations cockpit on the home page, fed entirely from real Dolibarr data
· No Dolibarr core file modified, so upgrades stay routine
· No JavaScript or PHP dependency; the only remote asset is an optional font
· Deep configurability without touching a file: palettes, layouts, sidebar and top-bar modes, typography, card treatment
· A genuine dark mode, designed as its own surface family
· Seven languages, with a generator that makes a partial translation impossible to ship
· Native lists, forms and permissions preserved, so users keep the behaviour they know
· Widgets that hide themselves rather than display an invented figure
41. Limitations
The following points were NOT verified during this build. Each is listed with the reason and the procedure to confirm it manually.
|
Item |
Reason |
How to verify manually |
|
Dolibarr 20 and 21 compatibility |
Only Dolibarr 17.0.3 was available on the build machine |
Install the module on a 20.x and a 21.x instance, enable it, and open the dashboard, a list, a card and the configuration screen |
|
Firefox, Edge and Safari |
Only Chromium 148 is installed on the build machine |
Open the dashboard, a list and the configuration screen in each browser, in light and dark mode |
|
Windows, Android and iOS |
The build machine runs macOS only |
Open the dashboard on each platform and check the drawer and touch targets |
|
Automated WCAG audit |
No audit tool is installed on the build machine |
Run axe DevTools or Lighthouse on the dashboard, a list and the login page |
|
Right-to-left languages |
No RTL language file is shipped with the theme |
Switch Dolibarr to Arabic or Hebrew and check the sidebar and card alignment |
|
The additional dashboards listed in the brief |
One administrator dashboard was built to the required level of finish; the further per-domain dashboards are not in this release |
Not applicable - see Future Enhancements |
|
Widget drag-and-drop and layout saving |
Not implemented in this release; widget visibility is configurable, their order is not |
Not applicable - see Future Enhancements |
|
Configuration import/export as JSON |
Not implemented in this release; a Restore defaults action is provided |
Not applicable - see Future Enhancements |
42. Future Enhancements
· Per-domain dashboards (commercial, finance, projects, stock, support) reusing the existing widget library
· Drag-and-drop widget arrangement with a per-user saved layout
· Configuration export and import as JSON, and duplication between entities
· A per-user override of the palette and density, on top of the entity default
· Right-to-left stylesheet variant
· Optional native time-clock integration when a punch-clock module is present, replacing the connection-log approximation used by the attendance widgets
43. Support and Maintenance
DoliSmart is published and maintained by DoliResources.
· Website: https://www.doliresources.com
· Licence: GNU General Public License v3 or later
· Copyright: 2026 DoliResources - all development rights belong exclusively to DoliResources
Bug reports should state the Dolibarr version, the PHP version, the browser, the list of enabled modules and the exact steps to reproduce. Dolibarr's own log (Home, Setup, Security, Logs) usually carries the decisive line, because every failed query in the dashboard data layer is written there with the originating function name.
The theme bundles no third-party code, image, icon or illustration. The brand mark was drawn for this theme and belongs to DoliResources. Icons come from Font Awesome 5 Free, already shipped with Dolibarr itself. The reference screenshot used during design was neither redistributed nor traced, and no asset from any commercial template is present in this package.
Receive product updates, new releases, feature announcements and exclusive offers.