The database table

Edit entries inline, add rows, add columns, and rearrange — all from the Collection detail page.


Open any Collection from the Collections sidebar and you land on its database table — a Notion-style grid of every entry of that Collection. It's the place to scan your data, fix typos without opening each entry, and add new properties without leaving the page.

The layout

┌────────────┬────────────┬──────────┬──────────┬──┐
│ Aa Name    │ 📅 Date    │ 💪 Reps  │ 💬 Note  │ +│
├────────────┼────────────┼──────────┼──────────┼──┤
│ 💪 Push-ups│ May 21 …   │ 25       │ —        │  │
│ 💪 Push-ups│ May 18 …   │ 12       │ tired    │  │
├────────────┴────────────┴──────────┴──────────┴──┤
│ + New entry                                       │
└───────────────────────────────────────────────────┘
  • Name and Date are always present and can't be deleted. By default Name comes first, then Date, but you can drag any column — including these two — to put them wherever you like. Whichever column ends up first stays pinned in place when you scroll sideways. Each row's Name shows an emoji in front — the entry's own emoji if you've given it one, otherwise the Collection's emoji. Click that emoji to open the picker and give the row its own icon right from the table (choose Remove to go back to inheriting the Collection's).
  • Hover a row and an Open button appears at the right of the Name cell. One click jumps straight to that entry's full page — the same place the right-click Open takes you, without leaving the table to do it.
  • Property columns sit alongside Name and Date. Drag any column header sideways to reorder — the order is saved per view, so each view of the Collection can lay its columns out differently.
  • The + at the right edge of the header row is where you add new columns. The + New entry button below the rows is where you add new rows.

Editing a cell

Click a cell to edit it — just like Notion, the cursor lands exactly where you clicked in the text (no select-all, no boxy highlight), so you can fix a typo mid-word without retyping. The editor matches the property kind:

  • Number / Text / Email / URL / Phone / Select — text input. Enter commits + moves to the next row; Tab commits + moves right; Esc cancels.
  • Checkbox — single click toggles it. No popover, no extra step.
  • Tags — the tag picker, right in the cell, including creating a new tag on the spot.
  • Date / Date+time — native picker.
  • Colour — the colour picker.

Some kinds are read-only in the table, because a cell is the wrong shape for them and typing into one would throw the real value away. Tap or right-click the row → Open to edit these on the entry's own page:

  • Page — shows the first line of your writing; the writing itself lives on the entry.
  • Stopwatch / Timer / GPS route — the recorded total. Start and stop them where the controls are.
  • Formula, Rollup, Portion — worked out for you from other values, so there is nothing to type.
  • Photos, files, and anything a sync brings in (screen time, heart rate, source logs) — shown as a summary.
  • Links to other entries — shown as chips; add and remove them on the entry page.

Edits save automatically as you commit them. The top bar shows Saving… then Saved. If something goes wrong you'll see Save failed and a toast with the error.

On a phone

The table edits on the phone too. Tapping a cell opens the right editor for that property: a checkbox ticks on the tap, tags open the tag picker, a date opens the date sheet, and a number or a piece of text opens a sheet with the property's name and a full-width field — the same editors you get on the entry page, just given room to breathe instead of squeezed into a column. Tap the Name cell (or any read-only cell) to open the entry itself.

Adding a row

Click + New entry below the table. A fresh row appears at the top of the list with the event time set to right now and the Name selected for you to type over. Any defaults you've configured on the Collection's properties get applied automatically.

The row appears optimistically — you can start typing before the server has confirmed.

Deleting a row

Right-click anywhere on a row to open a small menu with Open (opens the entry's detail page) and Delete. Delete moves the entry to Trash, exactly like deleting from the entry page itself.

Adding a column

Click the + in the top-right of the header row. A popover opens with two parts:

  1. Property name (top) — what you want to call this column. Optional; if you leave it blank, the catalog property's own name is used.
  2. Select type — the property catalog grouped by section (General / Time / Fitness / Food / Other). Click one to add it.

You can pick the same kind multiple times — for instance, two Number properties named "kg" and "reps". Type the name first, then pick Number from the list; the new column shows up with your custom name.

Renaming, resizing, reordering, hiding, deleting columns

Click any column header to open its settings popover. Edit the name and press Enter (or click outside) to save.

The popover also has a Delete column option. Confirming will:

  • Immediately remove the column from the table.
  • Move the column to Trash (filter "Properties" to find them). From there you can Restore the column — cell values come back intact — or Delete forever, which permanently removes the column and every cell value tied to it.
  • Pop a "Column moved to trash" toast with an Undo button for ~5 seconds. Tap Undo to restore the column without leaving the page.

Deleting a column is fully reversible until you Delete forever from Trash.

The popover also has a Hide column option — the column disappears from the current view without deleting anything (other views keep showing it). To bring it back, click the active view's pill and pick the column under Hidden columns, or open View settings → Property visibility and show it there; it returns to its old position.

Drag the right edge of any column header sideways to resize it. Drag the header itself sideways to reorder — this works for every column, including Name and Date, and the order is remembered per view (resizing a column applies everywhere; only the order is per-view).

On a phone, tap the + in the header row to open Columns: a switch per property to show or hide it in this view, and New property to add one. A width you set on a computer is respected on the phone, and any spare space is shared out so the table always fills the screen. Reordering columns lives in View settings → Column order, since there is no header to drag.

For more advanced per-Property settings — default values, "required" toggle, layout width on the entry page, Timer targets — click More settings → in the column popover. That switches the page to the Properties tab (/collections/[id]?tab=properties).

Find duplicates

Logged the same run twice? Imported a workout you'd already added by hand? Open the menu at the top of a Collection and choose Find duplicates. Kaizendex scans that Collection and shows you each likely duplicate pair side by side, with two choices per pair:

  • Merge — keeps the older entry and folds in anything the other one had that it was missing (a note, a distance, a heart rate). It never overwrites a value you already filled in — it only fills blanks. The extra entry then moves to Trash.
  • Keep both — leaves the pair untouched.

Matching is exact and predictable, not a guess: it pairs entries that line up on time, title, and — for workouts — distance and duration. Nothing happens until you pick Merge on a specific pair, and because a merge is a normal edit-and-delete, you can undo it from Trash or the entry's history if you change your mind.

Sub-entry columns: the matrix view

If your Collection has a Sub-entries property — a Workout made of Sets, a Dish made of Ingredients — the table grows extra columns that turn it into a matrix: every entry on its own row, lined up so you can compare them at a glance — so you can read, say, every workout's front-squats side by side to see your progression.

Two kinds of column appear, after your regular property columns:

  • A count column — named after your Sub-entries property ("Sets", "Ingredients"). Each cell shows how many children that entry has; hover it to peek at their names.
  • One column per child Collection — a "Front squat" column, a "Bench press" column, and so on. Each cell summarises that entry's children of that Collection.
 📅 Date     │ Aa Name    ┊ Sets ┊ 🦵 Front squat ┊ 💪 Press
─────────────┼────────────┼──────┼────────────────┼─────────
 Mon 26 May  │ 💪 Workout ┊  4   ┊ 10 × 12        ┊ 33 × 33
             │            ┊      ┊ 10 × 33        ┊ 22 × 22

How a cell summarises its children

Click a child-Collection column header to choose how that column collapses several children into one cell:

  • List (default for number-based children) — each child stacked on its own line (e.g. each set's reps × weight). Past four, the rest fold into a +N more you can hover.
  • Aggregate — one number: sum, average, min, max, last, or count of a field you pick (e.g. total reps, top weight).
  • Count + peek (default for text/tag children) — just how many, with the full list on hover.

The same menu has a Show field names toggle: instead of bare numbers like 20 × 12, each value carries the name you gave its field — 20 reps 12 kg. Rename the fields on the child Collection (e.g. to reps and kg) and the cells follow.

It also has a Hide column option, handy once a Collection accumulates many child Collections (say, one column per exercise). Hidden matrix columns come back the same way as regular ones: the active view's pill menu, under Hidden columns.

Click the count column's header (the one named after your Sub-entries property, like "Sets") for two choices: Hide this column only removes just the count, leaving the exercise columns in place; Hide all sub-entry columns collapses the whole matrix — the count column and every child-Collection column disappear together. Either way, each hidden column is listed under Hidden columns afterwards, so you can bring back just the ones you want. The same menu also offers Edit sub-entry columns JSON — the whole matrix setup (summary modes, hidden columns, widths, compact rows) as one editable document, checked before anything saves, for power users and the AI.

Pinned columns

Child Collections in the Collection's default sub-entries always get a column — even for an entry that skipped that one (the cell shows ), so your planned line-up stays visible. Any other child Collection you log appears as a column automatically.

Compact rows

By default each list cell stacks its children on separate lines. Flip the Compact rows toggle above the table to squeeze them onto one line (10×12 / 10×33 / +2) when you're scanning many entries at once.

Sub-entry columns are read-only here — click a child to open its entry; editing happens on the entry card or its detail page.

What's missing in v1

Some Notion features aren't here yet:

  • More view kinds — you can switch this table for a Board view, but there's no gallery, calendar, or timeline view per Collection yet.
  • Filtering and sorting — rows are shown newest-first by event time, always. No filter or sort controls in v1.
  • Multi-cell selection / paste / fill-down — edit one cell at a time.
  • Page columns are read-only — a Page column shows the first line of what you wrote, so you can scan your notes down the table. To change the text, open the entry (right-click the row → Open) or edit it on the entry's card. You can't write a Page inside a narrow table cell.

These are tracked for follow-ups.

Next