book clubs don't fall apart because people stop caring about the book. they fall apart because everybody reads at a different speed and nobody has any idea where anybody else is.
say you finish chapter twelve on a Tuesday. there's not much you can do with that. you can't bring it up in the group chat, because two people are somewhere around chapter four and you'd be ruining it for them. you also can't ask how far along they've got without it coming across as chasing them up. so you say nothing, and everyone else says nothing for the same reason, and a month later the club is a calendar invite people politely decline.
the piece of information that would fix all of this is one line long: what chapter is everyone on, and there's nowhere to put it.
what i'm building
a shared reading hub for a club. you mark chapters off as you finish them, and a chapter's discussion stays locked until you've marked that chapter read. the thread for chapter nine is sitting there the whole time, the people who've reached it can talk in it, and it just can't reach you until you catch up. spoilers stop depending on everybody remembering to be careful.
here is the guiding principle for this project:
- joining has to be a link and a name — no account, no email, no password. i'm fairly convinced that every wall you put in front of a book club costs you half of it, and a club that's down to three people isn't really a club any more. signing in will exist, but as an upgrade rather than a toll: sign in and your clubs collect into one library, and that's all it buys you.
there's nothing i personally find more irritating than having to sign in to something, so that's a principle i'm willing to die on (very dramatic, i know).
where it's at
i'm working on the design, and on making things as frictionless as possible. the database layer is in, and i've been spending a lot of time thinking about the right model for clubs, months, books, members and progress. one issue i've had is trying to figure out how to fingerprint users, the solution i landed on is: don't. there's no fingerprint, no device id, nothing clever. a member is just a name, typed once, inside one club. if you type "chris" and someone else in the same club already typed "chris", you're the same member as far as the app is concerned — that's on purpose, since a club is small enough that two people won't pick the same name by accident.
the part that actually took thinking was what happens when you sign in. i don't want signing in to create a second, empty version of you standing next to the guest version that's already been marking chapters off for two weeks. so when you sign in, the app looks for a member in that club with the name you're using and quietly attaches your account to it instead of making a new one. your progress was never tied to an account, it was tied to a name, and the account just claims it after the fact. the name gets remembered in localStorage too, so if you come back to join another club it's already filled in and you're not retyping it every time.
it's held up so far. it still feels fragile, and honestly i think it is — mainly because it's trusting a name instead of trusting an id. but it's holding up for now so we're going to run with it.
otherwise, the domain name spoilermark.com has been bought, i've designed a logo and will be ready to ship soon
what's next
check back in with me in genuinely a day or so. in terms of conception to deployment, this is one of the fastest projects i've put together and i'm fairly chuffed with it. i don't really care if anyone uses it because i built it for me and i think proceeding with that mindset is the best way to have fun building something.

Comments (0)