ObsiKO ObsiKO Docs

Bases (Data Tables) ๐Ÿ“Š

Reading logs, habit trackers, project boardsโ€ฆ collect your notes into a table, edit them right in the table, and even chart them. It works like a Notion database โ€” but all the data stays as plain text in your notes' frontmatter!

โ† Home: ObsiKO 101


What is a Base? ๐Ÿค”

Creating one โž•

What you can do in the table ๐Ÿ› ๏ธ

Edit right in the cell โœ๏ธ

The ๏ผ‹ new item row ๐ŸŒฑ

Type a note name in the dashed input at the bottom of the table and press Enter โ€” a new note is created pre-filled with frontmatter matching the current filter (tags, folder, properties). Great for entering many items in a row!

To have new cards come with a body outline too, add one line to the .base file: template: Template/Tasks.md (put it under a specific view if you want it per-view). Cards made with ๏ผ‹ then start from that form, not just the properties โ€” the same slot as Notion's database templates. With no declaration, the card's kind (type) template is used instead โ†’ 17 Structuring Knowledge. On conflict the kanban column's value wins (otherwise the card would land in the wrong column).

โœจ Fill with AI (column menu)

Pick Fill with AI in a column's โŒ„ menu and AI reads each note's content to decide the value. Try columns like "genre", "difficulty", or "one-line summary". You can fill empty cells only, or refill everything. โ†’ AI Agent

Chart view ๐Ÿ“ˆ

Switch a view to chart and the table becomes a graph โ€” just pick Group by (which property), Aggregate (count/sum/average), and Chart (bar/horizontal bar/line/area/pie/donut/lollipop). Date values and created/modified times are grouped by month automatically, so "books read per month" is one click away.

Reuse it everywhere โ™ป๏ธ

Kanban board ๐Ÿงฎ

Use As kanban in the view menu (tab โŒ„) to see notes as columns by property value (e.g. a status board). Drag a card to another column and that property value is written to the note (press-hold on phone/iPad; edges auto-scroll). For example, move a card from the "In progress" column to the "Done" column and that note's status changes to Done. The ๏ผ‹ in a column header creates a note with that status pre-filled. Columns in the toolbar reorders columns and pre-creates empty ones (like "in progress") that have no cards yet.
- Group by a property that doesn't exist yet: in the group select (or the section โ‹ฎ), use '๏ผ‹ Group by new property' and type a name like status into the autocomplete dropdown to start a board from a property no note has yet. Build the columns, drag a card, and that property gets filled in.
- A heads-up when a card drops out of the filter: if the view is filtered by the group property (e.g. a view where status == "todo"), moving a card to another column takes it out of the filter and it vanishes from the list โ€” but instead of disappearing silently, a toast lets you know ("Changed to Done โ€” hidden because it no longer matches this list's filter"). The note is safe, so if you keep several per-status sections, the moved card shows up in the matching status section.

Cards show 1โ€“2 leading properties of the view, plus a D-day badge when there's a due date (due ยท deadline; soon = amber, overdue = red) and a checklist progress โ˜‘ 1/2 when the note body has checkboxes. Right-clicking a card edits properties in place without opening the note.

Ready-made preset boards ๐ŸŽ

You don't have to build these from scratch โ€” pick them from the sidebar ๏ผ‹ menu or the command palette and they're made instantly.
- PARA board ๐Ÿ—„๏ธ: gathers notes that have a para value into a kanban with four columns โ€” project ยท area ยท resource ยท archive. Drag a card to another column and its para changes โ€” off to Archive when a project wraps up! โ†’ Structuring Knowledge
- Library ๐Ÿ“š: a vertical bookshelf (front-facing gallery) view that collects your type: book notes. Drag a cover onto the Done shelf to mark it read, with a reading-progress bar under each cover. โ†’ Library & Reading Log
- Ledger ๐Ÿ’ฐ: gathers your expense and income entry notes into a table plus a summary panel โ€” income, expenses, and balance by period, budgets, and category shares all on one screen. โ†’ Ledger

Project view ๐Ÿ—‚๏ธ

Manage a whole project with one base โ€” a home with cover, status, D-day and progress, with the other views stacked as sections below. Eight templates (web novel, reading, research, tasks, trip, blog, studyโ€ฆ), info-note embed, โœจ AI briefing, dashboard and calendar integration โ€” see 12-1 Project View for the full guide!

Curious about the source? โ€” View menu โ–ธ Source ๐Ÿง‘โ€๐Ÿ’ป

Use ๐Ÿ‘ View menu โ–ธ Source (โŒ˜โ‡งO) at the top to edit the raw YAML (pick it again to return to the table). It's the same place and the same action as Source view for markdown notes. Complex filters the UI doesn't build (nested or/not, date arithmetic) and formula columns (formulas:) can be written in source and are computed in the table.

Formula Columns โ€” ObsiKO Does the Math โœจ๐Ÿงฎ

Add expressions under formulas: and each note gets a computed read-only column (formula.<name>). Use property names directly, and reference other formulas as formula.<name>.

No need to open the source โ€” use ๏ผ‹ โ†’ 'ฦ’ Add formula column' at the right end of the table to build one in a form, and edit or delete any formula later via โŒ„ โ†’ 'ฦ’ Edit formula' on its column header.

You don't need to know the formula language ๐Ÿ™Œ

Pick a preset and the properties it needs appear right below it. Tap Progress, for example, and you get [Current โ–ผ] [Total โ–ผ] โ€” choose your own properties and the expression writes itself. No extra screen, no second dialog; it all happens in place.
- If there's exactly one candidate, it's picked for you. If there are several, you choose โ€” a wrong guess wouldn't be an error, it would be a plausible wrong answer.
- Star rating and Checkbox are never auto-picked. Clicking those in the table writes to a real note property, so ObsiKO always asks.
- The Properties in this table chips drop a property name in at your cursor (no typing property names by hand). Names with spaces can't be used in formulas, so they're dimmed with the reason.
- Presets this table can't use are dimmed โ€” with no date property, D-day fades out. They're never hidden, and you can still tap them.
- The preview shows what produced what โ€” Demian ยท read_pages 300 ยท total_pages 300 โ†’ 100.

๐Ÿ’ก The property names in the presets are just examples. If your notes use different names, the preview tells you "No note in this table has a โ—‹โ—‹ property yet" and gives you deadline โ†’ [replace with โ–ผ] right there to swap in a property this table actually has. Notes that don't have the property yet simply stay blank, not an error, and saving is never blocked (you can add the property later).

formulas:
  total: price * qty
  grade: score >= 90 ? "A" : score >= 80 ? "B" : "C"
  dday: dateDiff(today(), due)
  dueweek: dateFormat(due, "MM.DD") + " (" + weekday(due) + ")"
  avgscore: round(scores.avg(), 1)
  authors: author.split(",").unique().sort().join(" ยท ")
  budget: coalesce(budget, 0) > 0 ? "set" : "TBD"

Group, split, and count links ๐Ÿงฉ

It reads properties written in the body too ๐Ÿ“

Values written in the body as status:: in progress โ€” not in frontmatter โ€” are picked up by tables all the same (so opening an Obsidian Dataview vault doesn't make your data vanish). Mid-sentence works too: I'd rate it [rating:: 9].
- Frontmatter always wins โ€” if the same name exists in both, the frontmatter value is used.
- ObsiKO never writes in this syntax (frontmatter is the standard home for properties). It only reads.
- Flashcards use the same symbol (front::back), so notes tagged #flashcards are skipped entirely โ€” no card ever turns into a property!

Automatic values in your text: = expression โœจ

Write `= dateDiff(today(), deadline)` mid-sentence and the computed value shows up right there. It's the exact same syntax as the formulas above โ€” nothing new to learn!
- Put the cursor on that line and the original expression comes back so you can edit it. The file keeps the expression, so Obsidian shows the same value.
- Anything works: `= file.inlinks.count()`, `= round(cost * 1.1)`. If it isn't a valid expression, nothing is changed and the text stays as written.

What you can use:
- Operators: + - * / %, comparisons (== != > <โ€ฆ), && || !, ternary cond ? a : b, parentheses. Date ยฑ duration works too (due + duration("1 week")).
- Numbers: abs round(x, digits) floor ceil sqrt pow clamp(v, min, max) min max sum average(avg) number
- Dates: now() today() date("2026-07-17") duration("3 days") year month day hour minute weekday (day name) dateFormat(d, "YYYY.MM.DD HH:mm ddd") dateDiff(from, to, "days")
- Conditions & defaults: if(cond, a, b) (= choice) ยท coalesce(v1, v2, โ€ฆ) (= default, first non-empty value โ€” great for missing frontmatter)
- String methods: .lower() .upper() .trim() .slice(0,5) .replace("a","b") .split(",") .padStart(3,"0") .repeat(n) .contains() .startsWith() .endsWith() .isEmpty() .toFixed(1) .length
- List methods (tags, multi-value props): .first() .last() .count() .sort()/.sort("desc") .reverse() .unique() .sum() .avg() .join(" ยท ")

Widget formulas โ€” star rating โญ ยท checkbox โœ… ยท progress โ–ฐ

Formula columns aren't just text! Three of them are drawn as widgets right in the table.
- Star rating stars(rating): the cell shows 5 stars. Click (tap) a star and that count is written straight to the rating property; click the same star again to clear it to 0!
- Checkbox checkbox(done): the cell shows a checkbox that toggles the done property true/false.
- Progress progress(read_pages, total_pages): the cell shows a bar and a %, turning green when full. Already have a percentage? progress(completion) with a single value works too.
- Progress is display only (unlike stars and checkboxes you can't click to change it โ€” the percentage comes from the underlying properties).
- Notes where the total is 0, or the values are missing, stay blank instead of showing a strange number.
- Columns you built earlier with round(read_pages / total_pages * 100) become bars too โ€” no need to touch the file.
- Pick 'Star rating', 'Checkbox' or 'Progress' from the presets in the add-formula form and it's set up in one go. Picking a preset fills in the formula name too (a name you typed yourself is left alone). Sorting and aggregation use the underlying values as usual.

Linking notes and calculating across them โ€” relations & rollups ๐Ÿ”—๐Ÿงฎ

Notion's Relation and Rollup, right here in ObsiKO. Except there's no separate database โ€” a [[wiki link]] in your frontmatter simply is the relation.

---
title: New product launch
para: project
parent_area: "[[Marketing]]"   # โ† this one line is the "relation"
done: false
---

That's all it takes to pull values from the note on the other end straight into your table.

Grab a value from the other note โ€” just one dot .

In a formula column, write relationProperty.propertyToFetch.

formulas:
  Area status: parent_area.status          # the status of the parent area note
  Area name: parent_area.file.name          # the other note's file name
  Author country: authors.country           # several links? several results!

Counting the notes that point at you โ€” rollups with backlinks()

It works in reverse too! Gather "every note that points at me via parent_area" and count or total them. Especially handy in a table of Area notes.

formulas:
  Projects: backlinks("parent_area").count()
  In progress: backlinks("parent_area").where("done", "!=", true).count()
  Total budget: backlinks("parent_area").sum("budget")
  List: backlinks("parent_area").join(" ยท ")

Want it more explicit? Use the function form

Functions do exactly the same thing as the dot notation โ€” handy when property names contain dots or spaces.

Written as Meaning
link(parent_area).status follow one link and read a value
links(authors).count() treat several links as a list
backlinks("parent_area") notes pointing at me via that property (= inbound(...))

๐Ÿ’ก Why build it this way: put relations in a separate database and they vanish the moment you move a note or open it in another app. In ObsiKO a relation is just one line of Markdown, so Obsidian sees an ordinary wiki link โ€” and it shows up naturally in the Connections panel and Graph View too. โ†’ Structuring Knowledge

Dress up the view title โ€” banner color & name ๐ŸŽจ

Good to know ๐Ÿ’ก


โ† Previous: Map Drawing ยท Home ยท Next: Project View โ†’