A reading list in Obsidian.
One note per book, a few properties and one Base: what you’re reading now, what’s next, and what you’ve finished this year. No plugins.
What you’ll build
A book tracker that you own, in plain text files:
- One note per book, with your notes and quotes under the properties.
- A Books base with three lists: reading now, up next, and finished this year with total pages and your average rating.
- A shelf board grouped as Reading, Up next and Finished, in that order.
- Author pages that list their books by themselves.
You need Obsidian 1.9 or later with the Bases core plugin on. Everything below was tested in Obsidian 1.14 with no community plugins.
Step 1: One note per book
Make a folder called Books and one note per book, named after its title:
---
type: book
author: "[[Ursula K. Le Guin]]"
status: Reading
added: 2026-09-28
started: 2026-10-01
finished:
rating:
pages: 248
---
## Why I picked it up
## Notes and quotesstatusis one of To read, Reading, Finished or Abandoned.- Dates use the 2026-10-01 format, so they sort and count.
ratingis a number from 1 to 5, filled in when you finish.authoris a link, which makes the author pages in step 4 work.
Save a copy with empty values as Templates/Book.md for new books.
Step 2: The Books base
Make a file called Books.base and paste this in:
filters:
and:
- type == "book"
- '!file.inFolder("Templates")'
formulas:
days_in: if(status == "Reading", if(started, (today() - date(started)).days.round(0), ""), "")
shelf: if(status == "Reading", "1 Reading", if(status == "To read", "2 Up next", if(status == "Finished", "3 Finished", "4 Set aside")))
properties:
file.name:
displayName: Book
formula.days_in:
displayName: Days reading
views:
- type: table
name: Reading now
filters:
and:
- status == "Reading"
order:
- file.name
- author
- started
- formula.days_in
- pages
- type: table
name: Up next
filters:
and:
- status == "To read"
order:
- file.name
- author
- added
- pages
sort:
- property: added
direction: ASC
- type: table
name: Finished this year
filters:
and:
- status == "Finished"
- if(finished, date(finished).year == today().year, false)
order:
- file.name
- author
- finished
- rating
- pages
sort:
- property: finished
direction: DESC
summaries:
rating: Average
pages: Sum- Reading now shows how many days you’ve been on each book, from the
days_informula. - Up next lists the oldest additions first, so the list doesn’t only grow.
- Finished this year uses
.yearto keep this year’s books.Sumtotals the pages andAverageaverages your ratings.
Step 3: A shelf board, in your order
Add a board under views: in the same file:
- type: cards
name: Shelf
groupBy:
property: formula.shelf
direction: ASC
order:
- file.name
- author
- ratingGroups sort alphabetically, so “Finished” would come before “Reading”. The shelf formula from step 2 puts a number in front of each group (1 Reading, 2 Up next…), and the board groups by that instead.
Step 4: Author pages that list their books
Add one more view:
- type: table
name: By this author
filters:
and:
- file.hasLink(this.file)
order:
- file.name
- status
- finished
- ratingThen make a note for the author, such as Authors/Ursula K. Le Guin.md, and put this line in it: ![[Books.base#By this author]]. file.hasLink(this.file) means “books that link to the page I’m on”, so every author page lists its own books with the same line.
Step 5: Your reading on the Home page
Embed the two lists you check most:
## Reading now
![[Books.base#Reading now]]
## Up next
![[Books.base#Up next]]When you finish a book, set status: Finished, the finished date and a rating, and it moves to Finished this year by itself.
Mistakes that cost us time
- Typing the author as plain text. It works in the tables, but the author pages need a link:
"[[Ursula K. Le Guin]]", with the quotes. - A finished book with no
finisheddate. It won’t count toward this year. Add the date, even a rough one. - The template showing up on your shelf. The
!file.inFolder("Templates")filter fixes it. - Ratings as stars. Store a number from 1 to 5. Numbers can be averaged; ★★★★ can’t.
Keep going.
How to Build a Simple CRM in Obsidian (No Plugins)
Track clients, follow-ups and invoices with one note per client and a single Base. Copy-paste code, no plugins.
Read the guide Bases recipesObsidian Bases Examples: 10 Copy-Paste Recipes
Ten tested recipes: due this week, days since, late invoices with totals, weighted pipeline, renewals, per-note embeds and the gotchas.
Read the guide Small office ITSmall Office IT Documentation in Obsidian: What to Record
What a small office should write down about its IT, what never to store, and a simple setup in Obsidian.
Read the guide Building with AIA Spec Template for AI Coding Tools (Claude Code, Cursor)
A one-page spec template for Claude Code, Cursor and other AI coding tools, a plan-first prompt, and where Obsidian fits.
Read the guide StudentsObsidian for Students: Track Assignments, Exams and Grades
Assignments with due dates, an overdue list and exam countdowns, plus class pages that list their own work. Copy-paste code, no plugins.
Read the guide Daily planningA Calm Daily Planner in Obsidian: Tasks by Energy and Time
A brain-dump inbox, tasks sorted by energy and minutes, up to three focus tasks, and bills two weeks ahead, on one Today page.
Read the guide Game mastersObsidian for Game Masters: Run a Tabletop RPG Campaign
Session prep in 30 minutes, secrets and clues until they’re revealed, NPCs listed on their places, and faction clocks. Any system.
Read the guide Real estate agentsReal Estate CRM in Obsidian: Follow-ups and Contract Deadlines
Follow-ups due, past clients to check on, and every contract deadline in the next seven days, in a private vault. No plugins.
Read the guide HabitsA Habit Tracker in Obsidian with Bases (No Plugins)
Habit checkboxes in your daily note, and one Base that counts each habit over 7 and 30 days. No streaks to break, no plugins.
Read the guide MeetingsMeeting Notes in Obsidian: Agenda, Decisions and Action Items
A meeting template with agenda, decisions and next steps, a list of follow-ups still to send, and every open action item on one page.
Read the guide ProjectsA Project Tracker in Obsidian: Board, Deadlines and Health
One note per project, a health column that flags overdue and due-soon work, a board in your column order, and client pages that list their projects.
Read the guide