Markdown-based Databases & Catalogs

A catalog of books. Team contacts. A project tracker. Recipes, film notes, a reading list. The reflex is to reach for Notion or Airtable, and hand another platform another slice of your life. The markdown-based alternative starts from one observation: a file with frontmatter is a record.

---
name: Hermione Granger
house: Gryffindor
patronus: otter
---
Brightest witch of her age. Friend of [[Harry]].

A folder of these is a table. Fields, records, even relations (that wiki-link is a foreign key if you squint). What's missing is the query layer, and that's what the tools provide. Here's exactly that: three character files rendered as a live, sortable table in Obsidian:

table2

This idea has a name and a full essay behind it: The Markdown Database Pattern ๐ŸŒŸ This page is the practical version.

The tools

Obsidian Bases is the headline: native database views (tables, cards, filters, sorting) over the frontmatter in your plain files. Point a Base at your folder and your book notes become a sortable library. Before Bases, the Dataview plugin did the same with a query language, and it's still there for power users.

Publishing: a catalog is more fun shared. Flowershow publishes Bases to the web, views and all, so your film log or team directory becomes a live page.

For builders: markdowndb indexes a markdown folder into SQLite (frontmatter, tags, links, tasks) and gives you a JavaScript API. A real queryable database from plain files, in seconds, and you keep the files.

Build one now

The hands-on walkthrough is create a simple catalog of anything: 20 minutes in Obsidian, from empty folder to a linked, structured character catalog with images. Do that once and you'll see catalog-shaped things everywhere.

A few conventions that pay off as it grows:

  • Consistent field names across a folder (decide status vs state once)
  • One folder per "table": books/, people/, projects/
  • An index page with a Base or list view as the folder's front door
  • Dates in frontmatter (created, finished) so you can sort by them later

The honest limits

The pattern shines up to a few thousand records and gets silly at a few hundred thousand. Complex relational needs (joins, rollups, aggregation across tables) belong in an actual database. And multi-user simultaneous editing is git-style asynchronous, with everything that implies.

But be honest about your actual case first. Most "databases" in most people's Notion are a few dozen rows with three fields. For that, plain files win on every axis that matters in five years: portability, durability, AI-readability, and the freedom to change tools without a migration.

Related: replacing Notion ยท knowledge bases ยท the pattern essay

Built with LogoFlowershow