Discover powerful Dolibarr extensions designed to automate your business processes

Fury is a premium theme-module that replaces the entire Dolibarr back-office interface with a modern, Material Design based administration experience. It is aimed at organisations that rely on Dolibarr daily and expect the visual quality, clarity and ergonomics of contemporary business software such as Odoo Enterprise, SAP Fiori, Microsoft Dynamics or Zoho One.
Unlike a conventional CSS theme, which can only recolour the stock interface, Fury is delivered as a Dolibarr module. This allows it to render its own navigation sidebar, its own application bar and a purpose-built analytical dashboard on every screen of the application, while leaving the Dolibarr core completely untouched. No core file is modified, patched or overwritten; the theme can be enabled and disabled at any time from the standard module management screen.
Key figures
|
Item |
Value |
|
Commercial name |
Fury |
|
Technical name |
theme_fury |
|
Folder name |
fury |
|
Distribution archive |
module_fury-1.0.zip |
|
Version |
1.0 |
|
Module id |
10000240 |
|
Dolibarr compatibility |
16.0 → 21.x and later |
|
Minimum PHP version |
7.0 |
|
Shipped languages |
English, French, Spanish, German, Italian, Portuguese (BR), Dutch |
|
Core files modified |
None |
|
Editor |
DoliResources — https://www.doliresources.com |
Fury reskins every surface of Dolibarr through six coordinated mechanisms, referred to throughout this document as the six pillars of the theme.
|
Pillar |
Purpose |
|
Forced menu manager |
Fury registers its own menu manager so its sidebar appears on every interface — standard, public and smartphone alike. |
|
Global CSS and JavaScript |
The theme's stylesheet and script are injected on all pages through the module_parts declaration, so native Dolibarr screens inherit the design. |
|
Hooks |
The main hook redirects the home page to the Fury dashboard; the addHtmlHeader hook injects a pre-paint script that restores the user's theme and sidebar state before the first frame is drawn, eliminating any visual flash on reload. |
|
Sidebar rendered from the native menu tree |
The navigation is generated from Dolibarr's own menu structure, so every installed module appears automatically with its correct permissions. |
|
Custom dashboard |
A dedicated index.php renders the analytical home screen inside the standard Dolibarr page chrome. |
|
Native widget area |
Dolibarr's own configurable boxes remain available and are restyled to match the Fury design language. |
The visual identity is drawn directly from the Fury reference design and was sampled pixel-by-pixel from the supplied mock-up rather than estimated by eye.
|
Role |
Colour |
Material reference |
|
Primary / active state |
#009688 |
Teal 500 |
|
Secondary / accent |
#3F51B5 |
Indigo 500 |
|
Success |
#4CAF50 |
Green 500 |
|
Information |
#03A9F4 |
Light Blue 500 |
|
Warning |
#FF9800 |
Orange 500 |
|
Danger |
#F44336 |
Red 500 |
|
Sidebar background |
#262F41 |
Custom ink |
|
Application canvas |
#FAFAFA |
Grey 50 |
|
Card surface |
#FFFFFF |
White |
Typography is Roboto, the Material Design reference typeface, with Roboto Mono for numeric and reference values. Corner radius is deliberately small (3 px by default) and elevation is expressed through soft two-layer shadows, matching Material elevation rather than the heavy rounded cards common to generic admin templates.
· Single visible surface. Inner containers are kept transparent so information sits on one clear card instead of a card inside a card.
· One dark anchor. The sidebar remains dark in both light and dark mode; it is the constant visual anchor of the product and the element users orient themselves by.
· Unambiguous state. The active navigation entry is a full-bleed primary bar spanning the whole row, not a subtle tint, so the current location is never in doubt.
· Data first. Numbers are set in a light weight at a large size, with the period-over-period variation directly beneath them, coloured green or red according to business meaning.
· Meaningful empty states. A panel with no data renders an icon, a title and a one-line explanation, never a blank rectangle.
· Honest ratios. Every percentage shown compares the same population on both sides of the calculation, so the figure cannot be misread.
· Respectful motion. Animations follow the Material easing curve, and can be disabled entirely from the configuration screen or by the operating system's reduced-motion preference.
The Fury dashboard replaces the standard Dolibarr home page. Every figure is computed live from the database; nothing is simulated or hard-coded.
|
Zone |
Content |
|
Header |
Breadcrumb, personalised greeting, current date, period selector (week / month / year), Customise shortcut and New document action. |
|
KPI wall |
Four saturated analytical tiles, each carrying its own inline chart. |
|
Turnover panel |
Twelve-month turnover curve with the previous year as a dotted reference, preceded by a four-metric audience strip. |
|
Commercial pipeline |
Doughnut breakdown of proposals by status, with an amount-per-status legend. |
|
Sales summary |
Monthly and daily sales counters plus a sales-by-country doughnut. |
|
Live activity |
Thirty-day invoice pulse chart and the most invoiced products. |
|
Active customers |
Solid accent tile linking to the pre-filtered customer list. |
|
Recent activity |
Latest documents created, with author, object link and amount. |
|
Today's agenda |
Events scheduled for the current day. |
|
Latest invoices |
Table of the most recent invoices with reference, customer, date, amount and status. |
|
Native widget area |
Dolibarr's standard configurable boxes, restyled. |
Each KPI tile links to the corresponding Dolibarr list, pre-filtered to exactly the same period and status as the tile itself. The number of rows in the destination list therefore matches the figure displayed on the tile, which removes the most common source of mistrust in management dashboards.
The KPI wall reproduces the four saturated tiles of the Fury design. Each tile carries a title with its current value, the variation against the previous period with a directional arrow, a refresh and a detail action, and a full-width chart occupying the lower portion of the card.
|
Tile |
Indicator |
Colour |
Chart |
|
1 |
Turnover invoiced over the period |
Indigo #3F51B5 |
Bar series |
|
2 |
Unpaid invoices outstanding |
Light Blue #03A9F4 |
Line with points |
|
3 |
New customers created |
Green #4CAF50 |
Line with points |
|
4 |
Orders recorded |
Teal #009688 |
Line with points |
The turnover definition is not hard-coded. Administrators choose whether turnover is computed on amounts excluding or including tax, and whether abandoned invoices are counted. The same setting drives the KPI, the twelve-month chart and the status filter of the destination list, so the three always agree.
|
Widget |
Description |
|
Turnover evolution |
Twelve-month curve for the current year, with the previous year shown as a dotted reference line and an interactive tooltip. |
|
Audience metrics |
Active clients, invoices issued, unpaid rate and average basket, each with its period-over-period variation. |
|
Commercial pipeline |
Proposals by status as a doughnut with a clickable amount legend. |
|
Sales summary |
Monthly and daily sales counters. |
|
Sales by country |
Turnover per customer country as a doughnut with a percentage legend. |
|
Live activity |
Invoice pulse over thirty days plus the most invoiced products. |
|
Active customers |
Live count of active customer records. |
|
Recent activity |
Chronological feed of the latest documents created. |
|
Today's agenda |
Events scheduled for the current day. |
|
Latest invoices |
Recent invoices with their payment status. |
|
Native Dolibarr boxes |
Standard widgets (account balances, low stock, statistics) restyled and reorderable by drag and drop. |
· Dark ink background (#262F41), preserved in both light and dark mode.
· User card showing the photo or initials, full name, e-mail address and quick links to the dashboard, the personal record and logout.
· Live navigation filter that narrows the menu as the user types.
· Accordion groups generated from the native Dolibarr menu tree, so every installed module appears automatically and permissions are respected.
· Full-bleed primary bar marking the active entry, across the entire row.
· Favourites section backed by the user's real Dolibarr bookmarks, with an add-current-page action.
· Recently opened section listing the last records consulted, each with a colour-coded type tag; the number of entries is configurable.
· Collapsible rail reducing the sidebar to icons only on desktop, with the state remembered between sessions.
· Off-canvas drawer with backdrop on phones and tablets.
· Menu button that opens the drawer on mobile and collapses the rail on desktop.
· Global search field querying customers, invoices, products, orders and proposals, with results grouped by object type on a dedicated page.
· Light or dark mode switch, available from every screen.
· Native Dolibarr controls preserved in full: multi-company selector, print view, contextual help, notifications and the user menu.
· Configurable presentation: light, dark, transparent or coloured.
The login screen inherits the Fury palette, typography and elevation through the theme's stylesheet, which is served on unauthenticated pages as well. Form fields, action buttons, focus rings and error messages all follow the Material treatment used across the application, so the visual transition from sign-in to dashboard is seamless.
Configuration is available from Setup → Modules → Fury. Settings are grouped into three sections and every label, hint and option is translated.
|
Setting |
Values |
Default |
|
Colour palette |
Teal, Blue, Green, Indigo, Purple, Orange, Red, Grey, Custom |
Teal |
|
Primary colour |
Any hex colour |
#009688 |
|
Secondary colour |
Any hex colour |
#26A69A |
|
Accent colour |
Any hex colour |
#3F51B5 |
|
Success / Danger / Warning / Info |
Any hex colour |
Material set |
|
Sidebar background |
Any hex colour |
#262F41 |
|
Corner radius |
Integer, pixels |
3 |
|
Font size |
Integer, pixels |
14 |
|
Load the Roboto web font |
Yes / No |
Yes |
|
Dark mode by default |
Yes / No |
No |
|
Disable animations |
Yes / No |
No |
|
Right-to-left layout |
Yes / No |
No |
|
Page layout |
Fluid, Boxed, Full width, Compact |
Fluid |
|
Setting |
Values |
Default |
|
Sidebar width |
Integer, pixels |
268 |
|
Sidebar style |
Dark, Light, Mini, Compact, Large, Floating |
Dark |
|
Header style |
Light, Dark, Transparent, Coloured |
Light |
|
Hide favourites |
Yes / No |
No |
|
Hide recently opened |
Yes / No |
No |
|
Recently opened entries |
Integer |
5 |
|
Setting |
Values |
Default |
|
Disable the Fury dashboard |
Yes / No |
No |
|
Hide the native widget area |
Yes / No |
No |
|
Turnover basis |
Including tax / Excluding tax |
Including tax |
|
Include abandoned invoices |
Yes / No |
No |
A Reset action restores every setting to its factory default, behind a confirmation prompt. Write operations are restricted to administrators at server level, independently of the interface, so the screen may safely be exposed on a public demonstration instance in read-only mode.
|
Device class |
Viewport |
Behaviour |
|
Desktop |
≥ 1400 px |
Full sidebar, four-column KPI wall, two-column analytical grid. |
|
Laptop |
900 – 1400 px |
Two-column KPI wall, panels reflow to the available width. |
|
Tablet |
760 – 900 px |
Two-column metric strip, stacked panels, sidebar collapsible. |
|
Smartphone |
< 760 px |
Off-canvas drawer with backdrop, single-column layout, full-width tiles. |
The absence of horizontal page scrolling is verified programmatically at 390 px on every screen captured during quality assurance. On phones the native login block is made horizontally scrollable so that the user menu, and in particular the logout action, always remains reachable.
Fury implements a genuine dark mode rather than an inverted filter. A complete second set of design tokens is defined, and Dolibarr's own core variables are remapped onto those tokens, so native screens — lists, record cards, forms, settings pages — follow the dark palette automatically without any per-page work.
· Toggled from the application bar on any screen.
· The choice is stored per browser and reapplied before the first paint, so a reload never flashes.
· An administrator can define the default for users who have never set a preference; a user's own choice always takes precedence.
· Core rules that hardcode light hexadecimal colours, such as the table row separator, are re-tinted so no harsh light line survives on a dark background.
Fury is a standard Dolibarr module. It declares its assets and hooks through the descriptor's module_parts array and registers its menu manager on activation. No core file is modified.
|
Mechanism |
Implementation |
|
Menu |
MAIN_MENU_STANDARD_FORCED and the front-office and smartphone variants are set on activation, with menus enabled in module_parts. |
|
Assets |
CSS and JavaScript are dynamic PHP endpoints. They bootstrap Dolibarr minimally in order to read the configuration and translations, then emit the correct content type. |
|
Hooks |
main, all, toprightmenu and searchform. The main hook redirects the home page; addHtmlHeader injects the pre-paint state script and the print stylesheet. |
|
Palette propagation |
The module stylesheet loads after the core theme and redefines Dolibarr's own :root variables in terms of the Fury tokens. Because those tokens also exist in the dark set, native pages follow light and dark automatically. |
|
Cache busting |
Asset URLs carry a revision parameter, bumped automatically when the module version changes, so users receive new assets on an ordinary reload. |
|
Print view |
The sidebar and application bar are hidden and the content takes the full page. |
fury/
├── core/modules/modFury.class.php Module descriptor, activation, menus
├── core/menus/standard/
│ ├── fury_menu.php Menu manager
│ └── fury.lib.php Sidebar renderer and helpers
├── class/
│ ├── actions_fury.class.php Hooks (redirect, head injection, print)
│ └── fury_demo.class.php Demonstration data generator
├── css/fury.css.php Design tokens, core remap, all styling
├── js/fury.js.php Theme switch, collapse, drawer, top bar
├── index.php Analytical dashboard
├── search.php Global search results
├── admin/setup.php Configuration screen
└── langs/{en_US,fr_FR,es_ES,de_DE,it_IT,pt_BR,nl_NL}/fury.lang
|
Browser |
Minimum version |
Status |
|
Google Chrome |
90 |
Fully supported |
|
Microsoft Edge |
90 |
Fully supported |
|
Mozilla Firefox |
88 |
Fully supported |
|
Safari (macOS) |
14 |
Fully supported |
|
Safari (iOS) |
14 |
Fully supported |
|
Chrome / Android |
90 |
Fully supported |
The theme relies only on CSS custom properties, Flexbox and CSS Grid, all of which have been baseline features across these engines for several years. No external JavaScript framework is required and no polyfill is shipped.
Fury declares a minimum Dolibarr version of 16.0 and a minimum PHP version of 7.0. Every core function it depends on was verified to exist with an unchanged signature across that range, which is why the theme also runs unmodified on Dolibarr 20 and 21 and is expected to continue working on subsequent releases.
|
Dolibarr version |
Status |
|
16.x – 19.x |
Supported |
|
20.x |
Supported |
|
21.x |
Supported |
|
Later releases |
Expected to be supported; no core file is modified |
1. Sign in to Dolibarr with an administrator account.
2. Open Home → Setup → Modules/Applications.
3. Select the Deploy/install external app tab.
4. Upload module_fury-1.0.zip and confirm.
5. Locate Fury in the module list and enable it.
6. The Fury sidebar, application bar and dashboard are applied immediately.
7. Optionally open the module's configuration screen to adjust the palette, layout and dashboard options.
Manual installation. If the upload facility is disabled on the server, extract the archive and copy the fury folder into the htdocs/custom directory, then enable the module from the same screen.
Should the sidebar not appear immediately after a first activation, disable and re-enable the module once. This re-runs the activation routine, which registers the menu manager.
Select one of the eight ready-made Material palettes from the configuration screen. To use corporate colours, choose Custom and set the primary, secondary and accent colours; every derived tint, including hover states, soft backgrounds and link colours, is recomputed automatically from those values.
The corner radius and base font size are numeric settings applied globally. A radius of 0 produces a strictly rectangular, enterprise appearance; larger values give a softer look.
Six sidebar presentations and four application-bar presentations are available and can be combined freely, for example a light sidebar with a coloured header.
Enabling the right-to-left option mirrors the layout, the sidebar side and the direction of variation indicators, for Arabic, Hebrew and other right-to-left languages.
All CSS class names and data attributes are prefixed with fury-, and every translatable string is prefixed with Fury in the language files. This guarantees that no other module can accidentally override the theme's styling or its wording, and it makes safe extension straightforward.
· Two HTTP requests only. The whole theme is delivered as one stylesheet and one script.
· No JavaScript framework. All behaviour is written in vanilla JavaScript.
· Charts are server-rendered SVG. There is no charting library to download, parse or execute.
· Icons are vector glyphs and inline SVG paths; no icon bitmap is requested.
· Assets are served with a one-hour browser cache and a revision parameter that changes with the module version, so updates propagate on an ordinary reload.
· Expensive counts are cached in the session rather than recomputed on every page.
· The pre-paint script prevents the reflow and repaint that a JavaScript-applied theme would cause.
· The web font is optional and can be disabled to remove all external requests.
|
Asset |
Uncompressed size |
|
fury.css.php (rendered) |
≈ 83 KB |
|
fury.js.php (rendered) |
≈ 10 KB |
|
Total theme payload |
≈ 93 KB, cached for one hour |
The Screenshots folder delivered alongside this document contains high-resolution captures taken at a device pixel ratio of 2 (and 3 on mobile) from a live Dolibarr installation populated with realistic business data.
|
File |
Content |
|
00_login.png |
Sign-in screen |
|
01_dashboard_main.png |
Main dashboard, monthly period |
|
02_dashboard_week.png |
Dashboard, weekly period |
|
03_dashboard_year.png |
Dashboard, annual period |
|
04_thirdparties_list.png |
Customer list |
|
05_thirdparty_card.png |
Customer record |
|
06_products_list.png |
Product catalogue |
|
07_orders_list.png |
Sales orders |
|
08_proposals_list.png |
Commercial proposals |
|
09_invoices_list.png |
Customer invoices |
|
10_agenda.png |
Agenda |
|
11_projects_list.png |
Projects |
|
12_users_list.png |
Users |
|
13_user_card.png |
User record |
|
14_setup_modules.png |
Module management |
|
15_theme_settings.png |
Fury configuration screen |
|
16_global_search.png |
Global search results |
|
17_stock_list.png |
Stock |
|
18_suppliers_list.png |
Suppliers |
|
19_dark_dashboard.png |
Dashboard in dark mode |
|
20_dark_invoices.png |
Invoice list in dark mode |
|
21_dark_thirdparty.png |
Customer record in dark mode |
|
22_sidebar_collapsed.png |
Collapsed icon rail |
|
23_tablet_dashboard.png |
Tablet rendering |
|
24_mobile_dashboard.png |
Smartphone dashboard |
|
25_mobile_invoices.png |
Smartphone invoice list |
|
26_dashboard_fullpage.png |
Complete dashboard, full page |
· A complete interface, not a recolouring: custom sidebar, application bar and analytical dashboard.
· No modification of the Dolibarr core, so upgrades remain straightforward.
· Native screens inherit the palette automatically in both light and dark mode.
· A genuine dark mode covering the whole application, switchable from any screen.
· Eight ready-made palettes plus full custom colour control.
· Six sidebar presentations and four application-bar presentations.
· Seven languages shipped, at strict key parity.
· Every KPI links to a list filtered to exactly the same scope, so figures can be trusted.
· Ambiguous business calculations are exposed as settings rather than being decided silently.
· Right-to-left support, high-resolution rendering and the ability to disable animations.
· Extremely light payload, with no external JavaScript dependency.
· Per-user dashboard layouts with drag-and-drop widget arrangement.
· Additional role-oriented dashboards for finance, human resources and production.
· Export of dashboard panels to PDF and spreadsheet formats.
· Import and export of the complete theme configuration as a shareable profile.
· Optional keyboard-driven command palette for power users.
· Additional language packs on demand.
Fury 1.0 was validated on a live Dolibarr 17.0.3 installation containing approximately 4,200 customer records, 1,990 invoices and 1,840 products, driven through a headless Chrome browser.
|
Check |
Method |
Result |
|
PHP syntax |
php -l on all 10 PHP files |
Pass |
|
JavaScript runtime errors |
Browser page-error listener over 25 screens |
0 errors |
|
CSS and stylesheet delivery |
Content type and payload verified over HTTP |
Pass |
|
Module installation |
Activation routine with numeric-id collision guard |
Pass |
|
Theme applied on every screen |
Own sidebar asserted per capture, no fallback selector |
25 / 25 |
|
Light mode tokens |
Computed style read from the document element |
Pass |
|
Dark mode tokens |
Computed style read after switching |
Pass |
|
Responsive, no horizontal scroll |
Measured at 390 px on every screen |
Pass |
|
Tablet layout |
Verified at 820 px |
Pass |
|
Mobile drawer and logout reachable |
Drawer geometry and login block scroll measured |
Pass |
|
Collapsed rail |
Sidebar width measured at 78 px |
Pass |
|
Translation key collisions |
All 184 keys compared against the core and all other modules |
0 collisions |
|
Translation completeness |
Key parity across the 7 languages |
184 / 184 each |
|
Undefined translation keys |
All references cross-checked against the language files |
0 orphans |
|
Character encoding |
Byte-level check for double encoding |
Clean UTF-8 |
|
Naming residue from the reference |
Case-sensitive search for former names |
0 occurrences |
|
Debug statements |
Search for var_dump, print_r, console.log |
0 occurrences |
|
Hardcoded module paths |
All paths resolved through the core path builder |
0 occurrences |
|
Copyright headers |
DoliResources header present in every file |
17 / 17 |
Defects found and corrected during validation
· A zero-value doughnut slice still painted a coloured dot on the ring because of the rounded line cap; zero-length segments are now skipped entirely.
· Text on the solid accent tiles was repainted by Dolibarr's global link colour, rendering it invisible against the tile background; the colour is now forced on the tile itself.
· The sidebar could be hidden on desktop when the core applied its collapse class; the display rule is now enforced on the base selector rather than only within the mobile media query.
· The administrator's default dark-mode setting was never read by the interface; it is now wired into both the pre-paint script and the runtime script, while a user's own choice still wins.
· One hundred and thirty-five translation keys used generic names already defined by other modules, which silently displayed foreign wording; every key is now prefixed.
· The configuration defaults did not match the stylesheet defaults, so Reset restored a foreign palette; both sets are now aligned.
· The analytical row stretched the sales card, leaving a large empty area; columns now size to their own content.
· On narrow screens the native login block overflowed, making the logout action unreachable; the block is now horizontally scrollable.
All checks listed above pass on the delivered build.