Page browser
An important aspect of a note taking app is browsing notes you have already written. For daily notes, I have a daily, weekly and monthly overview. I collect individual blocks into pages by tagging them. However, browsing the pages is actually fairly difficult! One reason I liked non-linear notebooks is you can kinda hide away the chaos of tags and just claim "you search it on demand". I can just summon a page when I need it.
This masks the fact that I completely lose track of my pages within a week. I will first share the current state of page browsing, follow up with issues I had with scaling this approach, and end with a solution I was happy with.
What we have (is slop)
I don't like folders, and I tried a tree-like structure but you can see the pagination kick in making the page browser a fairly bad overview. The styling also doesn't match the new aesthetics, but that is secondary. I thought pinned blocks are important, journal pages are important and deserve their own tab. I also tried different modes including graph view. One of my first thoughts about lifelab was not god damn graph gimmick, but I chickened out and vibed it in anyway. Yeah. it is pretty bad.
Pinned blocks
Image
Extracted text
Copy[todav] xP ?ump xoP run Pages O Pages 551 # Journal 2852 Pinned 8 Filter 8 pages. t navlgate collapse/exand Entepn rname Tab st Tabunnest add subpage pin/unpin z00m i OD List E Outliner Granh Group Name bloa code paper oroiects lifelab shopping show tasks
500 pages
Image
Extracted text
CopyPages Filter 551 pages NAME anilist anime Anime Tracker apartment api-doc archerv blOC bOoK capture-template code anilist/ callback anime Clevatess: Majuu no Ou to Akago to Kabane no Yuusha Frieren: Beyond Journey's End Season 2 JUTCELIACENCSO.TheCrI! 1-100 of 551 ? Pages 551 Journal 2852 ? Pinned B List Outliner GrahGroup Name UPDATED 2ma 5mo 1mo 1mo 2mo 5mo 5mo 1mo 1mo 5mo 2mo 5mo 1mo 1mse 456
Graph view
Image
Extracted text
Copy(today] Jump xop rur Pages ? Pages 551 Journal 2852 ? Pinned Q Filter 551 pages. 101 pages 3 links_group:blog (0 backlinks) Pietrach a too C B List E Outliner Graph Group Name Group by amespacFit taa roup:bloc .0 ? Finaty he the lah Ne fovet HTML picM conoept exn e 12t MLengineur Csf appendd trst tadama Buterty Wike up ge oranun 5 0 el Te .OC Im Con Jnshk softo rece 7 1t tat i inelve lnanonThn ccurnai bottom b ot ofommodh ahe etab TiodAntOrC Tio elet Webs a voe of Al What goee amn Paranormal Actvtr w et hit doue t Hetne ta b wrot Pra 123 Prague 1113 Praoue 17 18 Prsous4s aet buufe ? bage brouser Iab a eventind o atis iat
How to visualize something with no structure
I had claude mock up a ton of html demos to salvage this but I kept hitting the same issue. Claude assumes the concepts have some semantic value, but I don't. From my perspective, we can be taking notes about people, or anime, or mosquito DNA sequencing experiments, or Apple Intelligence feature localization. We can collect any kind of tags with any kind of nesting. The only opinionated thing I introduce is mandatory daily view and a sense of timeline. I don't want to force anyone to have person as a concept nor is there any reference in the code for it.
Maybe... I should not be doing this
I rephrased the problem of "how can this thing serve anyone" to "how do I make anyone help themselves" and the answer was fairly obvious: just code it yourself! Right now pages endpoint is a dedicated, 5k JS line long react component that queries the database and renders these horrendous views in the 3 screenshots above. Instead, it should.. just be a page. With code blocks that query the database! Users can modify it to their liking and I don't have to deal with it. One addition I made was a 2D grid view (where all the blocks are rendered on a grid instead of sequentially. Any page can turn this view on)
I added 2 default code blocks, which users can modify, and they are free to use the nb.graph API to make something nicer than the grotesque solution I came with. The drawback is each block does a separate database query, and if you are not careful it can be very wasteful, but I decided to pay this cost to have less custom UI.
Do it yourself and leave me alone
Image
Extracted text
CopyPages (all]: May 14: Overview Recent 15 pages TITLE Pages coTumns table table iournal/2926-04-29 journal/2026-04-36 journal/2926-04-28 journal/2026-04-27 journal/2026-05-01 journal/2026-05-17 journal/2026-05-16 iournal/2026-05-12 : journal/2026-05-14 > Run All pages -ilterNamespaces 8 age Filter... TITLE goedel ello journal ifelah Tutorial neople bersor rompt svstem : journal/2026-05-14: > Ruh Filter... Al1 pages 15943 nages TTTLE Pages columns page table tab1 table journal/2026-04-29 journal/2926-04-30 journal/2026-04-28 journal/2026-04-27 journal/2926-05-01 iournal/2026-05-17 journa1/2026-05-16 iourna1/2926-05-12 pre page. tah 1-25 of 15943 next :journal/2926-05-14: > Run Tip: nb.get pages() lists every page; ui. render dispatches to any installed renderer. Customize this page