Skip to content

Coming from Excel

If you build spreadsheets for your business, you already understand how Rangka works. The concepts map directly. This page translates what you know into Rangka terms.

The core idea is the same

In Excel, you put data in cells, write formulas that reference other cells, and everything updates automatically when you change a value. You never manually recalculate. You declare relationships and the system maintains them.

Rangka works the same way. You declare what data to show, how to show it, and what happens when someone interacts. The framework keeps everything in sync.

Concept mapping

ExcelRangkaWhat it does
Cell with a valueWidget with a field bindingDisplays a piece of data
Formula (=A1*B1)Expression (NaN)Computes a value from other values
Cell reference (A1)Field binding (bind: { field: 'name' })Points to where the data lives
Named range$state.selectedIdA named value you can reference anywhere
Data validation (dropdown)Input widget with field metadataRestricts what can be entered
Conditional formattingvisible conditionShows or hides content based on a value
WorksheetPageOne screen of your application
Table (structured range)Table widgetRows of records with columns
Filter button on a table$filter reactive variableNarrows which rows appear
Sort button on a table$sort reactive variableChanges row order
VBA button macroButton widget with an actionDoes something when clicked

How formulas become expressions

Excel formula:

=IF(B2="Draft", "Pending", UPPER(B2))

Rangka expression:

{{if(status == 'draft', 'Pending', upper(status))}}

Excel formula:

=SUM(D2:D10)

Rangka expression:

{{sum(items.amount)}}

The syntax is different but the idea is identical. You reference fields by name instead of cell addresses. The system evaluates the expression and updates the result when inputs change.

How sheets become pages

In Excel, you organize related data into worksheets. Each worksheet shows a different view of your data. You might have an "Orders" sheet, a "Customers" sheet, and a "Dashboard" sheet.

In Rangka, each of those is a page. A page shows data from your models (like tables in a database) arranged with widgets.

Excel workbook           →  Rangka application
├── Orders sheet         →  ├── Orders page (table of orders)
├── Customers sheet      →  ├── Customers page (table of customers)
└── Dashboard sheet      →  └── Dashboard page (summary numbers)

How filtering works

In Excel, you click the filter arrow on a column header and pick values. The rows that do not match disappear.

In Rangka, you set a filter variable. The table reacts by showing only matching rows.

typescript
// Like clicking the Status filter and selecting "Draft"
$filter.sales.order.status = 'draft';

// Like setting a number filter "greater than 1000"
$filter.sales.order.total__gt = 1000;

// Like clearing all filters
$filter.sales.order.status = null;

The table watches these variables and re-queries automatically. No refresh button needed.

How buttons work

In Excel with VBA, you create a button and assign a macro. The macro runs code that changes cells, shows messages, or interacts with other systems.

In Rangka, you create a button widget and wire it to an action. The action is not code you write. It is a declaration of what should happen.

typescript
// Excel: Button → macro that sets status to "Submitted"
// Rangka: Button → action that updates the record
{ type: 'button', props: { label: 'Submit Order' },
  on: { click: { type: 'model.update', data: { status: 'Submitted' } } } }

The key difference

In Excel, you are both the builder and the user. You design the sheet and you use it.

In Rangka, you design the application once and many users use it. The framework handles multiple users, permissions (who can see what), data storage, and concurrent access. Your declarations become a multi-user application without you managing any of that complexity.

What you do not need to know

  • Programming languages (TypeScript is used but page definitions are structured data)
  • How databases work (the framework manages storage)
  • How web browsers render pages (the framework handles all of that)
  • How to build forms or tables (declare what fields to show, the framework renders them)