Databases (.base)

Last reviewed: 2026-08-19

With .base files you turn notes into databases: tables, boards, calendars — with filters, typed properties and relations between databases. The concept resembles Notion databases, with one decisive difference: the data does not live in the database, it lives in your notes.

Tip: If you create a new vault from the PARA, GTD, Zettelkasten or Journal template (see Getting Started), matching databases are already set up and linked together — a good starting point for seeing how everything fits together.

The core concept

A .base file stores only the view of your notes: which sources (folders, tags), which views, which filters and columns. The actual values live in the frontmatter of the individual Markdown notes — every table row is a note.

Concretely, that means:

The file format is compatible with Obsidian’s Bases format (details at the end of this page).

Creating a database

Every database can carry its own icon with a Database icon color — visible in the file tree, tabs and header.

A database can also serve as the vault’s Standard task database (Settings → Content & structure): the Tasks view then shows its entries as an own section and can move checkboxes from notes into it.

Views

A database can have any number of views; each has a View type:

ViewWhat for
TableClassic grid, sortable, with inline editing and optional sub-items
ListCompact row list
GalleryCards with an optional Cover image
BoardKanban columns grouped by a property (Group by) — dragging cards between columns changes the value; dragging a column header reorders the columns
CalendarEntries by Date field in Month, Week or Day, draggable
TimelineTime axis with Start date and optional End date
PinboardGoogle-Keep-style board of sticky notes — cards show the rendered note content (own section below)

Add view creates more; View options offers Rename, Duplicate, Delete and drag-reordering. Plainva remembers the last active view per file. Calendar and Timeline need a date field (Date only or Date & time as the Format); entries display the fields enabled under Properties.

Configure: tabs for view, columns, filter, sort, data source

The Configure button (top right) opens the panel beside the running view, so every change shows up immediately in the table or board. Tabs at the top pick one area — only one is shown at a time, instead of a long list. A small marker tells you whether each area affects This view or the Whole database:

On the phone, Configure opens the same areas as a list; tapping one enters that detail area and the back arrow leaves it.

Properties and field types

Clicking a column header opens the property editor (Property: X):

Behavioral notes:

Relations

Relations link notes to each other — like in Notion, but stored as perfectly normal [[wiki links]] in the frontmatter (visible in Obsidian as clickable property links).

Rollups

A rollup computes a value from the notes a link points at — “how many of this project’s tasks are still open”, “how much effort is in it altogether”, “when is the last one due”.

Column footers

A table column can carry a line underneath that sums it up — the Sum of an effort, the Earliest date, how many rows have a value at all.

Project planning: milestones, dependencies, effort

The timeline view turns a database into a plan. Four things carry that, and all of them live in the notes rather than in the .base:

blockedBy:
  - uid: "[[Projects/Rollout]]"
    reltype: FINISHTOSTART
    gap: P1D

Only one direction is stored: a stored pair is two facts that can disagree. Only FINISHTOSTART is evaluated and drawn; other types survive in the file untouched. A cycle is refused as you write it, naming the path it would close.

Where does this note belong? (database context)

When you open a database entry directly — from the file tree, from search or through a [[link]] — Plainva now tells you what it is part of:

Creating new entries

The Entry button at the top left (formerly New; clearly separate from the sidebar’s global New) creates a new item:

Pinboard (sticky notes like Google Keep)

The Pinboard view type shows the database’s notes as cards with their rendered content — a board full of sticky notes. Cards render text, lists and clickable checkboxes (a click ticks the task right in the note), images and formatting; tables, formulas and embeds appear as subtle placeholders. Clicking a card opens the note in the preview window.

Note for synced vaults: if two devices arrange the board at the same time, a .CONFLICT copy of the .base file can appear — only the arrangement is affected, never the notes’ content; delete or merge the copy.

Everyday usage

Several entries at once

Sometimes a change is not about one entry but about twelve.

Selecting (desktop): In the table and the list every row has a checkbox in front of it. It stays out of the way until you need it: it appears when the pointer is over the row, when the keyboard reaches it, and for every row once something is selected. Shift+click picks a range, the header checkbox picks everything. A click in a cell still edits it — selecting does not take that click away.

Selecting (phone): Hold a row and choose Select several — it is the first entry in the sheet. After that a tap selects instead of opening, until you clear the selection.

While something is selected, a bar replaces the toolbar and says how many entries it is.

While it runs you see progress (“7 of 24”) and can cancel it — what was already written stays and is reported. A single file that fails does not end the run: at the end you are told how many were changed and how many were not. If the change touches a large share of the view, the same second question appears that deleting asks.

The limit, deliberately: setting works for properties with one value — text, number, checkbox, date, select, status, email, phone. Not for tags, lists, multi-select and relations: there “set them all to X” would mean every existing value disappears. That needs its own add and remove, and it comes later.

Deleting with connections (cascade deletion)

When you delete something other entries hang off, Plainva shows an overview instead of a bare yes/no question:

Show elements opens a per-group list with a checkbox per element, so you can keep individual elements. The red button counts live (“Delete 15 files”). Clean up references (on by default) removes references to deleted items from the properties of the remaining notes; body links stay untouched. Past the familiar large-deletion threshold the second safety prompt appears as well, and with sync active the deletion also reaches the cloud. Every deleted file keeps a version snapshot — recoverable via Restore deleted files. If the database configured as the Default task database is deleted, Plainva resets that setting and removes template assignments; tasks at Google/Microsoft remain untouched. On the phone the same overview appears as a sheet with group checkmarks and a counter (without per-element opt-out).

Example: what a .base file looks like

.base files are YAML — here is a simple project list:

filters:
  and:
    - 'file.hasTag("project")'
properties:
  note.status:
    displayName: Status
    plainva:
      input: status
      options:
        - value: open
          color: teal
          group: Active
        - value: done
          color: gray
          group: Completed
views:
  - type: table
    name: All projects
  - type: table
    name: Board
    plainva:
      render: board
      groupBy: status

Everything Plainva-specific (colors, board rendering, relations, storage folder) lives under plainva: keys.

Editing .base files directly (tools and AI)

If a script or an AI assistant writes .base files without going through Plainva, three hard rules matter — break one and Obsidian refuses to open the whole file:

One more gotcha: property ids are note.-prefixed in the properties: map and in a view’s order/sort (note.status), but bare inside filter expressions (status == "Done") and inside plainva sub-keys (groupBy: status).

The complete on-disk contract — every field, the full two-sided relations example, and the safe-editing rules — is in the File Format Reference.

What about Obsidian?

The format matches Obsidian’s Bases format; Plainva writes its extensions exclusively into plainva: sub-keys, which Obsidian ignores (“graceful degradation”):

See also

A database calendar: month, week, day

The calendar view shows three periods — Month, Week and Day. The switch sits at the top next to Today; ◀ and ▶ always move by the period you are looking at. Switching keeps the day you are on: going from Month to Week shows the week that day falls in.

When the date column carries a time, it is shown before the title and the entries of a day are sorted by the clock — entries without a time follow underneath. The week start follows your setting under Appearance, exactly as in the real calendar.

If the view also has an End date (Configure → View), a multi-day entry is drawn as one bar across its days, not as a chain of look-alike cards. Where it leaves the week the bar is cut at the edge and continues without repeating its title.

The timeline: bars, edges, colour

The timeline shows one row per entry and, in it, a bar from its start date to its end date. At the top you switch between Week, 3 weeks and Quarter; a vertical line marks today across every row.

The edges of a bar are handles. Drag the right edge and Plainva writes the end date into the note; the left edge writes the start date. Drag the bar itself and both dates move together — its length stays what it was. Two things no gesture can force: an edge never crosses the other one (an end before its beginning would be a broken record), and without a configured End date none is invented — then only the beginning can move.

A bar that reaches beyond the period shown is cut at the edge and carries no handle there: what you see is the edge of the window, not the end of the entry.

Colour by property: under Configure → View, pick a select, status or multi-select property under Colour by. The bars then take the colour of their value — the same one it wears as a chip and on the board. Without that choice every bar keeps the accent colour.