12 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? ๐ค
- A
.basefile is a "saved table" โ it remembers which notes to collect (filters), which properties to show as columns, and how to sort. - The data itself is each note's frontmatter (properties like
status: todobetween---lines at the top). One note = one row, one property = one column! - It uses the same format as Obsidian Bases, so .base files made in Obsidian open as-is, and vice versa.
Creating one โ
- Click the folder button in the sidebar โ the dropdown has New Base with three scopes: whole vault / a folder / a tag. That's all you choose!
- Frequently used properties of the matching notes become columns automatically, and you can rename the file right in the tree the moment it's created.
- Right-clicking empty space or a folder in the sidebar โ New Base works too.
What you can do in the table ๐ ๏ธ
- Sort: click a column header to cycle ascending โฒ โ descending โผ โ off.
- Columns: hover a header for the โ menu (right-click works too) to rename, move left/right, or remove; the ๏ผ button at the far right adds a column from properties found in your vault.
- Filters: the ๏ผ Filter button adds conditions like "has tag โโ" or "status is done" as chips โ three dropdowns, no syntax needed.
- View tabs: one .base can hold several views (table/cards/kanban/chart/project). The tab's โ menu offers rename, switch tableโcardsโkanbanโchartโproject, duplicate, delete, and Export CSV.
Edit right in the cell โ๏ธ
- Click a cell to edit it in place. Column types are detected automatically โ
- โ boolean columns toggle with one click, ๐ date columns get a date picker, ๐ข number columns a numeric input
- ๐ท๏ธ list/tag columns are comma-separated, โ๏ธ text columns get autocomplete from existing values in the column!
- Clearing a value removes the property. Enter=save, Esc=cancel.
- Check several rows with the left checkboxes and a bulk actions bar appears โ change a property on all of them at once, or delete them all in one go.
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!
โจ 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 โป๏ธ
- Embed in a note: one line
![[Reading List.base]]renders a live table right there! Pick a view with#, like![[Reading List.base#Chart]]. It refreshes automatically when notes are saved. - Dashboard board: in Dashboard, pick Show a Base from the query-board presets.
- Mind map card: drop a .base file onto a mind map and the card renders a table snapshot. And if you select that card and press the 'Auto Mind Map' button, you can pick a board (view) and the whole table unfolds into a mind map (status boards get wrapped in colored groups, aligned like a kanban)!
- Export CSV: one click in the view menu โ opens straight in Excel or Google Sheets.
- Ask the AI: on desktop, ask the agent things like "find notes where status is todo" โ it queries properties like a database.
- Ask the AI to build tables: the desktop agent doesn't just query โ it can create and edit .base files themselves โ "make a reading log from the notes in this folder", "as a kanban board by status", "add a monthly-count chart view", "set it up as a project view" (and it seeds matching notes when needed). โ Recipes by Scenario
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, past dates turn red, and 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? </> ๐งโ๐ป
The </> Source button (top right) lets you edit the raw YAML (switch back to View to apply). 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 enter a name and expression in a form (with a live preview against the first row!), and edit or delete any formula later via โ โ 'ฦ Edit formula' on its column header.
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"
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 you can click โ star rating โญ ยท done check โ
Formula columns aren't just read-only! Two of them become interactive 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!
- Done check checkbox(done): the cell shows a checkbox that toggles the done property true/false.
- Pick 'Star rating' or 'Done check' from the presets in the add-formula form and it's set up in one go. 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!
- If there are multiple links (
authors: ["[[A. Kim]]", "[[B. Lee]]"]), you get a list of values back. - If a link is broken or the note doesn't exist, you quietly get an empty value (no errors!).
- When several notes share a name, we pick smartly: โ same folder โ โก shallower path โ โข most recently edited.
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(" ยท ")
- Add conditions with
.where(property, comparison, value)โ==!=><>=<=are available. - Aggregations include
countsumavgminmaxjoinuniquefirstlastanyallvaluescountNonEmpty. - Mix them with the functions above:
round(backlinks("parent_area").avg("progress"), 1)
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 ๐จ
- Every base view's title line has the type icon plus โ (rename) and ๐จ (header color) buttons.
- Press ๐จ for 6 preset colors plus a custom picker โ the whole top of the view becomes a color banner, from the tab row down through the title (like a Notion cover!). Text color flips automatically between white and black to match the background brightness. Press โ to go back to normal.
- A title renamed with โ is stored separately from the file name (clear it to follow the file name again).
Good to know ๐ก
- Round-tripping with Obsidian is safe โ settings ObsiKO doesn't know are preserved (though comments in the source are lost when you edit via the UI).
- Since the data is your note files themselves, backup, sync and migration are effortless, and it connects naturally with tags and the graph view.
โ Previous: Mind Map ยท Home ยท Next: Project View โ