Get AI summaries of any video or article — Sign up free
Notion Template: Simple Reading Log With Progress Bar thumbnail

Notion Template: Simple Reading Log With Progress Bar

Red Gregory·
5 min read

Based on Red Gregory's video on YouTube. If you like this content, support the original creators by watching, liking and subscribing to their content.

TL;DR

Use two linked Notion databases—Bookshelf for book metadata and Reading Check-in for session details—to make progress update automatically.

Briefing

A Notion reading hub can be built entirely inside the platform by pairing two linked databases—one for a “bookshelf” and one for individual reading sessions—then using rollups and formulas to generate a live progress bar. The core setup keeps book metadata (title, genre, author) in a bookshelf database, while each reading check-in records when reading happened, how long it lasted, how many pages were read, and a quick “enthusiasm” rating. A relation field connects each check-in back to its book, and a rollup sums pages read across all sessions so progress updates automatically as new entries are added.

The template’s practical friction point is how to store dates without breaking the ability to use calendar-style views. Instead of using a dedicated date property for the check-in entry title, the workflow uses the entry title itself as the date (formatted month/day/year). That choice makes it easy to create a calendar view while still keeping the book title out of the check-in database—book identity comes from the relation to the bookshelf. Each check-in then includes pages read, minutes read, and a dropdown for the reading mood (captivating, boring, or just okay), plus a “book” relation that links back to the correct bookshelf record.

Once the databases are connected, the progress bar is driven by three computed layers. First, a rollup aggregates total pages read from all related check-ins. Second, a formula calculates pages left as length minus pages read, where “length” is a numeric property on the bookshelf entry. Third, another formula turns the percentage of completion into a text-based progress bar made of emojis: it slices the emoji string based on (pages read ÷ length) and adds a completion checkmark at 100%. A separate formula rounds the completion percentage and appends a “%” label.

The template also tracks “days spent” reading a book by counting how many check-in entries exist. Because Notion rollups and text outputs can produce comma-separated results, the approach counts commas in the rollup output, then adds one to convert that into an entry count (commonly interpreted as days). The creator notes a quirk: emoji display doesn’t appear until a certain threshold (around 10%), so the formula is adjusted to ensure at least one emoji shows even when progress is low.

For presentation, the page design uses an embedded widget from indiefy.co to add a clock and a progress bar area, with dark mode toggles. Finally, the template rounds out session detail with a “chapters” multi-select property (built quickly by generating comma-separated values in a text field and converting them into a multi-select). While integrations like Readwise and Goodreads are mentioned as alternatives, the emphasis stays on a self-contained Notion-only system that updates progress automatically through relations, rollups, and formulas—no external API required for the core reading log experience.

Cornell Notes

The reading-log template uses two linked Notion databases: a Bookshelf database for book metadata and a Reading Check-in database for each reading session. A relation field links every check-in back to its book, and a rollup sums “pages read” across all related sessions. Formulas then compute pages left (length minus pages read) and convert completion percentage into an emoji progress bar that fills as reading accumulates, including a checkmark at 100%. Additional formulas estimate “days spent” by counting check-in entries via comma counting in rollup output. The result is a self-updating reading hub with session tracking (minutes, pages, enthusiasm) and a visual progress indicator.

How do the two databases work together to keep progress automatic?

The Bookshelf database stores each book’s core fields, including a numeric “length.” The Reading Check-in database stores session-level fields like “minutes,” “pages read,” and an “enthusiasm” dropdown. A relation property in Reading Check-in links each session back to the correct Bookshelf entry. Then a rollup on the Bookshelf pulls “pages read” from all related check-ins and uses SUM so totals update whenever new sessions are added.

Why is the check-in entry title used as the date instead of a date property?

The workflow uses the entry title to hold the date (formatted month/day/year) so a calendar view can be created. The creator notes that with this setup, calendar view works well, while using a separate date property can make the title area unusable for displaying entries in the same way. The workaround also avoids needing to type the book title into each check-in, since the book is determined by the relation to the bookshelf.

What formula logic turns reading progress into an emoji progress bar?

First, total pages read comes from a rollup sum. Then a formula computes progress as pages read ÷ length, multiplies by 10, and uses that value to slice an emoji string (e.g., 1–9 emojis plus a completion checkmark at 100%). A separate formula rounds (pages read ÷ length) × 100 and appends a “%” sign to display the numeric completion.

How is “days spent” reading calculated from check-ins?

Instead of directly counting related entries, the approach uses the rollup output that returns comma-separated values. It counts commas in the rollup text, then adds 1 to convert comma count into entry count (e.g., one comma implies two entries/days). The creator also mentions a display quirk where emoji behavior changes below about 10% completion, prompting adjustments to ensure at least one emoji appears early.

How are multi-select chapter values created quickly?

The method starts by typing chapter numbers into a text property separated by commas (e.g., 1 through 30). Converting that text into a multi-select property automatically splits it into individual selectable items, avoiding manual entry of each chapter.

What’s the role of indiefy.co widgets in the template?

The page design embeds widgets from indiefy.co for a clock and a progress bar-style visual. The creator specifically embeds a clock widget and a progress bar widget (with dark mode considerations), placing them in the page’s embed area to make the reading hub look more like a dashboard.

Review Questions

  1. If a book’s “length” is 300 and the rollup sum of “pages read” across check-ins is 75, what completion percentage and emoji-slice input would the progress formulas use?
  2. Why does counting commas in a rollup output require adding 1, and what does that represent in terms of check-in entries?
  3. What changes would be needed if the template switched from using the check-in title as the date to using a dedicated date property?

Key Points

  1. 1

    Use two linked Notion databases—Bookshelf for book metadata and Reading Check-in for session details—to make progress update automatically.

  2. 2

    Link each reading session to its book with a relation field, then sum “pages read” via a rollup to drive progress calculations.

  3. 3

    Store the check-in date in the entry title (month/day/year) to support calendar-style viewing while keeping the book identity handled by relations.

  4. 4

    Compute pages left as length minus total pages read, and generate an emoji progress bar by slicing a string based on (pages read ÷ length).

  5. 5

    Display completion percentage by rounding (pages read ÷ length) × 100 and appending a “%” label in a formula property.

  6. 6

    Estimate “days spent” by counting check-in entries using comma counting from rollup text output, then adding one to convert commas to entry count.

  7. 7

    Speed up multi-select setup (like chapters) by entering comma-separated values in a text property and converting it to a multi-select.

Highlights

Progress becomes self-updating once Reading Check-in sessions are related to Bookshelf entries and “pages read” is summed through a rollup.
The emoji progress bar is built entirely with Notion formulas by slicing an emoji string according to completion percentage and adding a checkmark at 100%.
Using the check-in entry title as the date is a deliberate workaround to keep calendar view usable without forcing a separate date property into the title display.

Topics

Mentioned