Public
Browse books from Notion with grid + hold status detail page
Val Town is a collaborative website to build and scale JavaScript apps.
Deploy APIs, crons, & store data β all from the browser, and deployed in milliseconds.
A web interface that pulls book data from a Notion database and displays it in a responsive grid with a detail page showing hold status.
- Go to notion.so/my-integrations and create a new integration.
- Copy the Internal Integration Secret β this is your
NOTION_TOKEN. - Open your Notion book database, click
β¦βConnectionsβ add your integration.
Your database should have these properties (names are flexible β the code tries common variants):
| Property | Type | Purpose |
|---|---|---|
| Title / Name | Title | Book title |
| Author | Rich text or Select | Author name |
| On Hold | Checkbox | Whether a hold has been placed |
| Cover / Image | Files or URL | Book cover image (optional, auto-fetched from Open Library when missing) |
| ISBN | Rich text | ISBN number (optional) |
| Genre | Select or Multi-select | Genre tags (optional) |
| Description | Rich text | Book description (optional) |
Set these in the val's Environment Variables settings:
NOTION_TOKENβ your Notion integration tokenNOTION_DATABASE_IDβ the database ID (found in the database URL:notion.so/DATABASE_ID?v=...)
/β Book grid with all books from the database/book/:idβ Book detail page with cover, metadata, and hold status/?genre=Fantasyβ Filters the book grid by genre/?title=hobbitβ Searches books by title (case-insensitive)
Missing covers are looked up from Open Library and cached in Val Town SQLite for faster subsequent requests.