<aside> ๐๐ป
Hi, it's Mikie. This is the page we're building together at REVL Bukit Timah.
Duplicate it into your own workspace so you can keep training with it after today. Everything here is yours to break. ๐
</aside>
<aside> <img src="/icons/home_gray.svg" alt="/icons/home_gray.svg" width="40px" />
</aside>
Two databases that make your training honest. Not a plan you abandon in February, a system that shows you the truth every week.
Database 1 ยท Workout Log โ one row per session. The thing you actually did.
Database 2 ยท 2026 Fitness Goals โ the two or three things you're training toward.
๐ฏ The payoff: by the end, every session you log moves a live progress bar on the goal it belongs to. Log the HIIT class you're about to do, and watch the bar move in front of you.
Part 1 - Workout Log
A Notion database is a spreadsheet where every row opens its own page. That's the bit a spreadsheet can't do. One row = one session.
/database inline โ name it DB1 Workout Logโ ๏ธ Name
DoneandMinutesexactly like that. The formula in Part 3 looks for those words. Spelling matters more than vibes here.
Part 2 - Goals + Relation
A log is nice. A log that proves progress on the goal you care about is a system. This is where that happens.
/database inline โ name it DB2 2026 Fitness Goals๐๐ป Add 2 or 3 goals. Keep it small.
You don't need to scroll back up. Pull the log into this page as a linked view: same database, new window. Nothing gets duplicated.
๐๐ป Type /linked view of data source โ choose DB1 Workout Log
Part 3 - Formula
The payoff. Your sessions, divided by your target, drawn as a bar you actually want to look at.
On DB2 2026 Fitness Goals โ + โ Formula โ name it Progress โ paste this whole thing:
lets(
target, prop("Target"),
done, prop("Sessions").filter(current.prop("Done")).length(),
pct, if(target > 0, min(done / target, 1), 0),
filled, round(pct * 10),
bar, style(repeat("โ", filled), "red") + style(repeat("โ", 10 - filled), "gray"),
if(
target == 0,
"โ ๏ธ Set a Target",
bar + " " + format(done) + "/" + format(target) + " ยท " + format(round(pct * 100)) + "%"
)
)
Hit Done. Every goal now shows a live red bar: sessions completed out of your target. Tick Done on a session and watch it move. That's the whole workshop in one property.
<aside> ๐งฉ
If it says "Property not found", it's one of these three. Every time.
DB2 isn't named exactly SessionsTargetDB1 isn't named exactly DoneFix the name, the formula fixes itself. It's always the names.
</aside>
๐ค The real shortcut: Notion AI writes any formula from plain English. Try: "a red progress bar of how many linked Sessions are Done out of Target". Then read what it wrote, that's how you learn formulas.
<aside> ๐ฅค
That's it. Log the class you just did, then go get your Dancingrain kefir. Questions after today: @mikie.build ยท Built at REVL Bukit Timah, 18 July 2026.
</aside>