Passage

Swapbook's shared shelf

Sign in

Enter your email — we'll send you an OTP.

Request to join

Tell the club who you are. An admin reviews requests and you'll get an email when you're in.

Enter your code

We sent a 6-digit code to . It expires in 10 minutes.

Passage

Swapbook's shared shelf
The club's shared shelf.
v1.3.0
⌕

the shared shelf

Library

My Shelf

What you're reading, want to read, and have finished — plus your reading year.

who has what

Lending

Track physical copies — record who you've lent a book to, borrow what's available, and keep swaps straight. No due dates; just who holds what.

Requests for your books

Members who asked to borrow a book you own. Approve to hand it over (marks it lent); decline to dismiss.

Out on loan

Your books someone's holding right now.

You're borrowing

Books you're holding from other members.

Your open requests

Borrow requests you've sent that are still waiting.

contribute

Add a book

One book, one card. It joins the shared shelf under its genre.

Turn on the AI helper in Settings (bring your own key) to auto-fill author, country, genre and blurb from the title — optional.

the long game

100 Essential Reads

The club's canonical list. Track how far the club has collectively read, and how far you have.

Club — at least one member has read it

Add an essential read

Curators keep this list. An entry links to a book automatically when its title + author match something on the shelf.

the club, together

Club

This month's pick, voting on the next one, and books members recommended to you.

This month's pick

Recommended to you

Books other members thought you'd like.

Polls

Anyone can start a poll — the next read, a meetup date, a venue. Every member gets one vote and can change it anytime.

+ Start a poll

Past picks

the club, lately

Activity

New books, ratings, and shelf moves across the club.

the club, set up

Settings

Members, identity, and the technical bits.

Your profile

How you appear on ratings, reviews and the activity feed.

Members

Everyone in the club. Admins manage roles from the Admin tab.

Identity

Access is by club whitelist. You sign in with a one-time code sent to your email — no password to remember, and every rating and shelf move is tied to you.

Signed in as

Developer & agent access

Exposes a small window.passage API so scripts or an agent can drive the shelf over the same core. Off by default; agents act under your session.

AI helper off

On by default, using the club's shared model — nothing to set up. It powers a “fill from title” button on Add-a-book and a “suggest one for me” on your shelf. Prefer your own model? Switch the provider below and bring your own key (stored only in this browser, calls go straight to your provider). The app works fully without it.

Uses the club's shared model — no key needed. Everyone's covered.

Any OpenAI-compatible /v1 endpoint — OpenAI, OpenRouter, Groq, Together, a local Ollama/LM Studio, etc.

Your data

Export the whole library back to the Swap Book spreadsheet shape — anytime, no lock-in. The exported file opens with no worker, no bill, no model.

Where things live: the shared shelf sits in your club's own Cloudflare D1 — your account, not ours. It stores plaintext book data (low-sensitivity, shared by design). Nothing of ours is in the loop.
Passage 1.3.0

who gets in

Admin

Requests to join, the access whitelist, and member roles. Admin-only.

Requests to join

People who asked to join. Approve to add them to the whitelist (they get an email); decline to dismiss.

Whitelist

Only these emails can request a sign-in code. Add someone, and they'll join with the role you pick the first time they sign in.

Member roles

Promote curators (catalogue hygiene) and admins (whitelist + roles). Roles nest: admin ⊇ curator ⊇ member.