Matrix lets you design custom data tables, fill them like a spreadsheet, and automate everything with JavaScript — all on your own machine, no subscription required.
| # | Name | Balance | Active | |
|---|---|---|---|---|
| 1 | Ana Lima | ana@example.com | R$ 3.200,00 | |
| 2 | Bruno Costa | bruno@example.com | R$ 800,50 | |
| 3 | Carla Melo | carla@example.com | R$ 0,00 | — |
No database admin skills required. Define your schema visually, edit data in a familiar grid, and let JavaScript handle the rest.
Create Packages and Tables with exactly the fields you need: text, integer, decimal, boolean, date, and datetime. No generic columns, no wasted space.
Navigate rows, insert and edit records inline, undo changes, and save all at once — just like a spreadsheet, but backed by a real relational database.
Add a new field to your table definition and Matrix automatically
runs the ALTER TABLE on the next launch. Your data is
never lost.
Keep separate databases for different projects or clients. Each Environment is an independent folder with its own SQLite file. Switch in one click.
Matrix is a desktop application. All data is stored on your own machine inside a standard SQLite file. No cloud, no account, no subscription.
Interface available in English and Portuguese (pt-BR). Field names and table descriptions support multiple languages out of the box.
Every environment exposes a built-in JavaScript engine. Write scripts directly in the console or embed them in your workflow — no recompilation, no plugins.
var pkg = env.createPackage("crm");
pkg.setName("pt_BR", "CRM");
var customers = pkg.createTable("customers", {
name: { pt_BR: "Clientes" },
fields: [
{ id: "name", dataType: "TEXT", required: true, size: 120, label: "Nome" },
{ id: "email", dataType: "TEXT", required: true, size: 200 },
{ id: "active", dataType: "BOOLEAN" },
{ id: "balance", dataType: "NUMERIC", size: 15, decimalPlaces: 2 }
]
});
// One-off field afterward: addField returns the table, so it can be chained.
customers.addField({ id: "phone", dataType: "TEXT", size: 30 })
.addField({ id: "created_at", dataType: "DATETIME" });
pkg.createProgram("seed", 'var c = ClientDataSet("crm.customers"); c.open();')
.setIcon("database");
// The table already exists in the database — it can be used right away.
var cds = ClientDataSet("crm.customers");
cds.open();
ClientDataSet() function is available globally in every environment's JavaScript console.
If you can model it as a table, Matrix can manage it.
Customers, contacts, deals, follow-ups — structure it exactly the way your team works.
Products, units, purchase prices, selling prices, quantities — with decimal precision.
Transactions, categories, accounts — run JavaScript to calculate totals and generate reports instantly.
Custom survey responses, field research, scientific datasets — any schema you define.
Matrix is built with Qt and distributed as a native binary for each platform. No Electron, no browser — just a fast, lightweight application that feels at home on your operating system.
Your data is stored in a standard SQLite file. Open it with any SQLite-compatible tool whenever you need direct access.
Free to download and use. No account, no cloud, no subscription.