| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Community Apps Dependencies | Show |
| Lines of code | 2356 |
| Technical Name |
sc_react_data_model |
| License | OPL-1 |
| Website | https://shachain.dev |
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Community Apps Dependencies | Show |
| Lines of code | 2356 |
| Technical Name |
sc_react_data_model |
| License | OPL-1 |
| Website | https://shachain.dev |
Database IDE for Odoo
For Odoo developers, implementers, and data analysts — six workspaces over your live ORM in one app: an ERD explorer, a four-layer read-only SQL workbench, an ORM data inspector, a schema audit suite, a module dependency graph, and a schema diff with migration skeletons. No schema changes. No external tool. Everything stays inside Odoo's own ACLs and record rules.
demo.shachain.devdemo · demo
What it does
Studio-grade visibility into your data model without leaving Odoo. Read your schema as a diagram, query it safely in SQL, browse records through the ORM, audit who can see what, map module dependencies, and diff schema between environments — six tools that share one global search bar and write their entire state into the URL, so any view is a link you can paste.
Every link goes back to Odoo
This studio doesn't trap you in a side-app. Every model name, field name, module label, and
audit row is a live link back to Odoo's native UI — open the form view, open the list
view, jump into Odoo Studio, open the ir.model definition in
Settings → Technical, or hand off to the Schema Audit, the Module Graph,
or the module dependency graph. Right-click any table on the ERD canvas for the full ten-item
handoff menu — Focus & zoom, Browse data, Open records,
View ir.model definition, View ACL / Record rules / Reverse lineage in
Schema Audit, View in module dependency graph, Hide table,
Copy name.
ERD Explorer
A focus-mode entity-relationship diagram per module — the centre model plus its 1-hop neighbours, with high-degree hub tables hidden by default so the picture stays readable. Single-click any table to slide in a 380 px in-canvas inspector with two tabs: Fields (every column with type and relation target, each FK is itself a link to the related model) and Inheritance (the model's full inherit chain rendered as a tree or as a per-module list). Foreign-key edges are colour-coded: many2one blue, many2many purple, one2many green, _inherit gray, _inherits orange. Card positions are saved per module, and the whole canvas exports to PNG.
Inheritance chain — tree view
Inheritance chain — per-module list with field deltas
SQL Workbench
A Monaco editor with schema-aware autocomplete for your live database: format, run, page through a result table, and export to CSV or JSON. Save queries (private or shared) and replay any entry from your per-user history with one click. Every statement runs inside a read-only sandbox enforced by four independent layers (detailed below) — an analyst cannot mutate data even by accident. Your editor draft is persisted to IndexedDB, so it survives page reloads and workspace switches.
Data Inspector
Browse any ORM model through the standard search_read path — it never bypasses
your ACLs or record rules, so users only ever see what they are allowed to. Pick the fields you
want, build a domain visually with live validation, and page through results
(50 / 100 / 200 at a time). The Open in native list button hands the
current domain back to Odoo's standard list view; click any row's ID to jump straight to
its form view. Every view is deep-linkable via the URL.
Schema Audit
Four tabs that cross-reference the metadata nobody can quite hold in their head:
ACL Matrix per module ·
Record Rules with their domain, groups, and CRUD flags ·
Lineage — the reverse map of views, window actions, reports, server
actions, scheduled jobs, and inherits per model ·
Orphans — models without views, fields with no view reference, tables with
no model, and multi-company models missing company_id. Rule rows, lineage entries,
orphan rows, and permission cells in the audit grids open the source record in Odoo when you
click them.
ACL Matrix — permission combos per group / model
Record Rules — per-model rules with groups and CRUD
Lineage — every artefact that points at the model
Orphans — models without views, tables without models, and more
Module Graph
The ir.module.module dependency graph rendered four ways — force, tree, radial,
and circular layouts. Filter to applications only or fold in auto-install modules. Double-click any
module to jump straight into its ERD, and the selection is recovered from the URL so a deep link
lands you in context.
Schema Diff
Export the current schema (via Odoo introspection) to JSON, then upload any earlier snapshot to
diff against it. The diff detects added, removed, type-changed, and renamed fields and models, with
a tunable rename-confidence threshold. From the result it generates pre-migration.py
and post-migration.py skeletons you can drop straight into your module.
Across every workspace
Global search bar
The search bar at the top of every workspace covers five sources — tables, columns, modules, saved queries, and recent history — and jumps you straight to the right workspace with the right target selected. Hold Cmd / Ctrl while clicking a table to open its native Odoo records instead of the ERD.
Keyboard shortcuts
Press 1–6 to switch between the six workspaces. In the SQL Workbench,
Ctrl + Enter (or Cmd + Enter on macOS) runs the
current statement.
URL-as-state
Every panel writes its state into the URL — no router library, it consumes the native Odoo router service. Refresh, deep-link, paste into chat, browser back/forward: all of it works.
i18n
Ships in seven languages — English, 简体中文 (Simplified Chinese), Deutsch, Français, Español, Italiano, and Português (Brasil) — following each user's Odoo language, with Odoo's standard PO workflow for adding more.
SQL Workbench — four-layer read-only sandbox
The SQL Workbench is built for analysts, not DBAs. Write access is blocked by four independent server-side mechanisms:
- sqlglot AST whitelist — only
SELECT,WITH, andUNIONroot expressions are accepted; anything else is rejected before execution. - Keyword regex deny-list — a backup pass that catches dialect quirks
sqlglot might miss (
INSERT,UPDATE,DELETE,DROP,ALTER,TRUNCATE,COPY,GRANT, …). - PostgreSQL
SET LOCAL transaction_read_only = on— a database-level guarantee that the connection cannot mutate state for the rest of the transaction. - Savepoint + unconditional rollback — the query runs inside a savepoint that is always rolled back, so even pathological side effects are undone.
Every SQL statement is recorded in the audit trail before the savepoint opens, so a forced rollback never erases history.
Roles & access
Four module-level groups (plus base Administration for full control), each extending the previous:
- Data Model User — ERD Explorer, Data Inspector, Module Graph. No SQL Workbench.
- Data Model Analyst — everything above, plus the sandboxed SQL Workbench.
- Data Model Admin — everything above, plus Schema Audit (ACL / Rule / Lineage / Orphans) and Schema Diff.
- Data Model AI User — reserved for the AI Assistant workspace (UI not shipped in this release).
Built on
- odoo_react_bridge — React + Mantine + lucide micro-frontend for Odoo
- odoo_react_vis —
vis-networkwrapper, shared so the ERD and Module Graph dedupe - sqlglot (Python, MIT) — multi-dialect SQL AST parser
- Odoo ORM —
search_read/fields_get/ introspection, never bypassed - PostgreSQL —
SET LOCAL transaction_read_only+ savepoint guarantees
Requirements
- Odoo 19 (this branch). Earlier Odoo branches are not shipped — the addon depends on the Odoo 19 group / privilege / ORM API.
- Python package
sqlgloton the Odoo server (declared inexternal_dependencies;pip install sqlglot). - A modern Chromium-based browser (Chrome / Edge / Brave) or the latest Firefox.
Frequently Asked Questions
Sometimes you need a quick answer to your question. You can get it right away here.
General
Setup
sqlglot on the server
(pip install sqlglot). The addon's React dependencies ship pre-built, so no
Node toolchain is required on the Odoo host.
SQL Security
SET LOCAL transaction_read_only = on, and a savepoint
that is always rolled back. Even a query with hidden side effects is undone.
search_read, so a user
sees only the records their ACLs and record rules allow — exactly as in any other
Odoo view.
Roles
Languages
Data Model Studio Releases
Every update brings new capabilities. Track the latest features and enhancements.
Release 2.0.1 (May 2026)
- First public version, after several months of internal iteration against real Odoo schemas.
- Bundles all six workspaces: ERD Explorer (with in-place table expand), four-layer read-only SQL Workbench, Data Inspector, Schema Audit (ACL / Rule / Lineage / Orphans), Module Graph, and Schema Diff with migration skeletons.
- Global search bar, 1–6 keyboard shortcuts, URL-as-state deep links, and translations in seven languages across every workspace.
- See the Overview tab for the complete capability list.
Try React Data Model Studio today
ERD · SQL Workbench · Inspector · Schema Audit · Module Graph · Schema Diff
demo.shachain.dev
Demo login: demo · demo
|
Or email business@shachain.dev
OPL-1 (Odoo Proprietary License v1.0) — Copyright 2026 Shachain · shachain.dev
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