Dashboard Builder & Analytics Studio | Drag-and-Drop KPI Dashboards · 34 Item Types · AI · SQL & External Databases | EN + AR / RTL
by Moaz Nabil https://github.com/moaaznaabilali$ 298.78

Dashboard Builder & Analytics Studio
Point it at any model, pick what to measure, and get a fast, good-looking board - without writing code. 34 item types, real cross-filtering, alerts that reach you, five kinds of data source, and Arabic that actually works.
34 item types | 30 ready-made boards | 5 data sources | 33 date presets | EN / AR both directions |

How it compares
The market leader sells its dashboard in two halves: the base module, and a second module you have to buy before you get custom SQL, external databases, scheduled email, TV mode or print. Both are listed on this store; the prices below are theirs, not ours.
| This app | Dashboard Ninja + Advanced | |
|---|---|---|
| Price | $295 | $590.66 + $760.35 = $1,351 |
| Modules to buy | One | Two |
| Item types | 34 | 18 |
| Ready-made boards | 30 | A handful |
| Custom SQL | Included | Second module |
| External PostgreSQL / MySQL | Included | Second module, marked Beta |
| Scheduled email | Included | Second module |
| TV / wallboard mode | Included | Second module |
| Two-level group-by (real pivot) | Yes | No |
| Cross-filtering | Yes | Drill-down only |
| Anomaly flags & forecasting | Yes, without an AI key | AI only |
| Index advisor | Yes | No |
| AI key | Your own (BYOK) | Vendor-issued, requested by email |
| Arabic / RTL | Built and tested in Arabic | Reported broken by reviewers |
| Arabic-Indic numerals | Yes | No |
Everything in the table above is in the one $295 module. There is no second purchase, no feature held back for a pro tier, and no metered AI - the AI uses your own key and is billed to your own account.
Two things this does differently
Right-to-left actually works. Layout is stored in logical coordinates and mirrored at render time, so dragging in Arabic moves the item the way you dragged it, axes reverse, tables mirror, and positions survive a drill-down. This was tested in Arabic, not translated after the fact.
Your data stays yours. Model-backed items run through read_group as the logged-in user, so record rules, multi-company and field access all still apply. A dashboard here can never show somebody a record they could not already open - and the AI is optional, off by default, and uses your own API key.
34 ways to show a number
One configuration drives every visualisation. Pick a model, measures and a group-by once, then switch the item between a tile, a bar, a heatmap or a pivot without rebuilding anything.
| ✓ | Numbers - tile, KPI with previous-period delta, big number, gauge, progress bar |
| ✓ | Comparison - bar, horizontal bar, stacked, combo (bar + line, dual axis), waterfall |
| ✓ | Trend - line, area, cumulative, cohort |
| ✓ | Composition - pie, doughnut, semi doughnut, polar, radar, radial, flower, funnel, treemap, sankey |
| ✓ | Distribution - scatter, bubble, heatmap grid, bullet |
| ✓ | Data - list, pivot table with a second group-by, map, to-do |
| ✓ | Content - rich text, image, embedded page |

It answers back
A dashboard that only draws is half a dashboard. Click a bar and the rest of the board narrows to what you clicked; ctrl-click and you land in the actual records, filtered to that slice, with date buckets converted correctly for your timezone.
Cross-filtering Click any element to filter every other item that shares the field. Items on unrelated models are left alone rather than blanked out. | Drill-through Ctrl-click opens the real list view, filtered to exactly the slice you clicked - not the whole item. |
Board filter bar Date, record, selection, text and yes/no filters defined once and applied to every item that can honestly answer them. | 33 date presets Today through next year, week-to-date, last 12 months, custom ranges - plus previous-period comparison on any figure. |


It tells you before you ask
Targets and bands Set a target and colour the figure by the band it falls in. Overlapping bands are refused, so the colour never depends on save order. | Alert rules Above, below, equals, moved more than X%, or simply anomalous. Hourly, daily or weekly, with a cooldown so nobody filters your alerts to trash. |
Anomaly flags Points more than three standard deviations from the item's own mean are marked. Simple on purpose - you can explain it. | Forecasting A least-squares trend projected forward, drawn dashed past the last measured point so it is never mistaken for data. |
Alerts are evaluated with the owner's access rights, never as superuser - so an alert can never tell somebody about records they could not open themselves.


Five kinds of data source
Any Odoo model Aggregated with read_group as the logged-in user. Fields are picked from a filtered list, so a typo cannot break a board silently. | Sandboxed SQL One read-only SELECT, its own permission group, writing keywords refused, 5000-row cap and a ten-second timeout. A dashboard must never be able to take the database down. |
External databases PostgreSQL and MySQL, read-only, tested from the form before you rely on it. | Files and REST CSV and Excel parsed once on upload - never while somebody waits - with optional scheduled re-import, plus any JSON endpoint. |

Getting it out of Odoo
Export CSV and Excel per item, PNG straight off the chart canvas, and the whole board as JSON to move between databases. | Scheduled email A board that emails itself daily, weekly or monthly, rendered with the owner's rights. |
Public links Revocable, expirable, optionally password-protected, rendered as one named user - never as superuser - and every view counted. | TV mode Full-screen wallboard with its own refresh schedule, so a screen on the wall stays current without hammering the database. |

Optional AI, on your own key
Describe what you want to see and get a real board. Only the field names of the models you choose are sent - never your records - and what comes back is rebuilt through the ordinary importer, so an invented field is refused with a message rather than saved as a broken item. A generated item can never be a SQL item.
Anthropic, OpenAI, Google, Azure or any OpenAI-compatible endpoint. Off by default: a fresh install makes no outbound request of any kind, and there is no per-call fee attached to the licence.

Built to stay fast
Index advisor Reads pg_indexes and tells you exactly which column your boards group and filter by has no index - with the statement to run. It never creates one for you; that is the database owner's call. | Per-item timing Every item reports how long it took, and says so when it crosses a second. |
Per-user caching Results are cached per user and per company, so two people with different record rules never share an answer. | Lazy loading Items load as they scroll into view - on a thirty-item board that is the difference between one slow open and thirty simultaneous queries. |

Thirty boards, ready to use
Install, open the gallery, press one button. Each board declares the modules it needs, so the gallery only ever offers what will actually work in your database - and every field in every board was verified against a live Odoo 19 database before shipping.
Sales performance Orders, revenue, salespeople, top customers, with a forecast tail | Product mix What sells, by units and by money, product against salesperson | Customer base Who they are, where they are, who owns them |
Sales pipeline Stage funnel, expected against weighted, stage-by-team heatmap | Lead sources Source, medium and country - which channels are real | Win / loss Lost reasons, lost value, and who is losing them |
Finance overview Invoiced, outstanding, payment state, who owes what | Receivables Due by month and by customer | Payables What you owe and when it falls due |
Journal activity Entries by journal and account | Inventory health Transfers by type and state, as a stacked grid | Stock on hand By location, by product, and the two crossed |
Stock movements The flow itself, month by month | Purchasing Spend by supplier and month, with a forecast | Supplier spend What you buy, in what quantity |
Manufacturing Orders by state and product | Production output Planned against produced, on one axis pair | Headcount By department and job, plus payroll cost |
Time off Days by type and department | Expenses Claims by employee and category | Projects Stage funnel and a project-by-stage heatmap |
Task flow Arrival rate against deadlines | Maintenance Preventive against corrective, by equipment | Repairs Repair orders by state and product |
Point of Sale Takings by day and by shop | POS sessions Session by session, cashier by cashier | Online store Web orders, carts, web revenue trend |
Events Seats and registrations per event | Email marketing Campaign volume and state | Executive overview Revenue, cash and pipeline on one page |













Everything in the box
Any Odoo model Point an item at anything installed | 34 item types Switch type without rebuilding the item | Drag & resize 12-column grid, logical coordinates |
Two-level group-by A real pivot, stacked bar and heatmap grid | Cross-filtering Click once, the whole board narrows | Drill-through Ctrl-click into the actual records |
33 date presets Plus custom ranges and comparison | Previous period Delta chip on any single-value item | Board filter bar Date, record, selection, text, yes/no |
%UID / %MYCOMPANY Personal and company-scoped boards | Targets Progress bars, gauges and bullet charts | Conditional bands Colour the figure by the range it lands in |
Alert rules Above, below, moved by X%, or anomalous | Anomaly flags Three sigma, no AI key needed | Forecasting Least-squares trend, drawn dashed |
Sandboxed SQL Read-only, single statement, capped, timed out | External databases PostgreSQL and MySQL, read-only | CSV & Excel Parsed once on upload, scheduled re-import |
REST endpoints Any JSON API, with a records path | CSV / Excel export Per item, with Arabic-safe encoding | PNG export Straight off the chart canvas |
Scheduled email Daily, weekly or monthly | Public share links Expiry, password, revocable, counted | TV / wallboard mode Full screen, its own refresh schedule |
BYOK AI Anthropic, OpenAI, Google, Azure or compatible | AI board builder Describe it in a sentence | AI explanations Per item and per board |
30 templates One click, module-aware | JSON import / export By name, so boards move between databases | Version history Restore, and the restore is undoable |
Usage analytics Who opens which board | Index advisor Reads pg_indexes, names the missing index | Per-user caching Two people never share an answer |
Lazy loading Items load as they scroll into view | Five themes And per-measure colours | Full EN / AR 679 strings, and the templates too |






Administration
| ✓ | Four groups: User, Designer, SQL Author (deliberately separate from Designer) and Manager |
| ✓ | Version history with one-click restore - and the current state is snapshotted first, so restoring is itself undoable |
| ✓ | Usage analytics: who opens which board, so an abandoned dashboard is a fact rather than a suspicion |
| ✓ | JSON import and export by name, not by id, so a board moves between databases |
| ✓ | Full English and Arabic interface, 679 strings translated |
Questions people ask first
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
Discuss (mail)
|
| Lines of code | 11965 |
| Technical Name |
mn_dashboard |
| License | OPL-1 |
| Website | https://github.com/moaaznaabilali |
Odoo Proprietary License v1.0 This software and associated files (the "Software") may only be used (executed, modified, executed after modifications) if you have purchased a valid license from the authors, typically via Odoo Apps, or if you have received a written agreement from the authors of the Software (see the COPYRIGHT file). You may develop Odoo modules that use the Software as a library (typically by depending on it, importing it and using its resources), but without copying any source code or material from the Software. You may distribute those modules under the license of your choice, provided that this license is compatible with the terms of the Odoo Proprietary License (For example: LGPL, MIT, or proprietary licenses similar to this one). It is forbidden to publish, distribute, sublicense, or sell copies of the Software or modified copies of the Software. The above copyright notice and this permission notice must be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Please log in to comment on this module