Book Clubs
Status: Future Feature
Book clubs are a core differentiator for Logbook, enabling organized, engaging reading experiences with voting, discussions, and scheduling.
Overview
Book clubs allow groups of readers to:
- Read books together with shared deadlines
- Discuss books in threaded conversations (with prompts)
- Vote democratically on the next read
- Track group reading progress
- Book club specific achievements
Key Design Decisions
Public vs Private Clubs
- Public clubs - Discoverable, anyone can join or request to join
- Private clubs - Invite-only, hidden from search/browse
Membership & History
- Leaving a club is a soft delete - member is marked inactive but history is preserved
- Users can still see books they read with the club, their contributions to discussions, and votes cast
- Allows rejoining without losing context
- Club admins see departed members in a separate "Past Members" section
User Stories
- As a book club member, I want to see our current read and deadline prominently so I know what to prioritize
- As a book club member, I want to participate in discussions without spoiling the book for others
- As a book club member, I want to vote on our next book so I have a say in what we read
- As a book club admin, I want to manage deadlines and nominations so the club stays organized
- As a book club member, I want to see who's reading and who's finished so I know who I can discuss with
Book Club Page
Header
- Club name and avatar
- Member count
- Join/Leave button
- Settings (admin only)
Current Read Section
- Book cover and title
- Reading deadline (countdown)
- Progress bar (% of members finished)
- "Start Discussion" CTA
- Quick actions: Log pages, Mark finished
Discussion Board
- Threaded comments
- Spoiler tags/warnings
- Sort by: Recent, Popular, Oldest
- Like, reply, bookmark comments
- Notification settings per thread
Voting for Next Book
- Nominated books (cover, title, author)
- Vote button (one vote per user)
- Live vote counts
- Voting deadline
- Nominate new book button
- Winning book auto-scheduled
Schedule/Calendar
- Past reads (archive)
- Current read with deadline
- Next book with start date
- Meeting dates (if applicable)
Members List
- Avatar grid
- Reading status indicators (reading, finished, not started)
- Member roles (admin, moderator, member)
- Invite friends button
Feature Requirements
Must Have
- Create book club (subscription?)
- Join book club
- Leave book club
- View club members
- Current read with deadline
- Discussion board (threaded comments)
- Vote for next book
- View past reads
- Club invitations (link, email)
- Private clubs (only findable view invite)
Nice to Have
- Spoiler tags in discussions
- Custom club roles/permissions
- Club discovery/browse
- Webdash for live member meetings? (i.e. live time voting etc)
Notifications
Push notifications for:
- New discussions
- Voting opens/closes
- Reading deadlines approaching
- New book selected
Admin Controls
- Nominate books
- Set deadlines
- Manage members
- Pin discussions
Technical Notes
Entities
BookClub- Club metadataClubMember- User-club relationship with roleClubRead- Book assigned to club with deadlineClubVote- User vote for nominated bookDiscussion- Threaded discussion containerComment- Individual comment in discussion
It would be interesting (possibly) to surface any user recommendations of a book currently being read in a club from the individual members so they're shown on a user profile and within the bookclub feed.
API Endpoints
Following controller patterns:
# Clubs
POST /v1/clubs/find # Paginated search
POST /v1/clubs/list # Non-paginated list
POST /v1/clubs # Create club
GET /v1/clubs/{clubId} # Get club details
PATCH /v1/clubs/{clubId} # Update club
DELETE /v1/clubs/{clubId} # Delete club
# Membership
POST /v1/clubs/{clubId}/join # Join club
POST /v1/clubs/{clubId}/leave # Leave club (soft delete)
POST /v1/clubs/{clubId}/members/find # List members
# Discussions
POST /v1/clubs/{clubId}/discussions/find # List discussions
POST /v1/clubs/{clubId}/discussions # Create discussion
GET /v1/clubs/{clubId}/discussions/{id} # Get discussion
PATCH /v1/clubs/{clubId}/discussions/{id} # Update discussion
# Voting
GET /v1/clubs/{clubId}/votes # Get current voting
POST /v1/clubs/{clubId}/votes # Cast vote
POST /v1/clubs/{clubId}/nominations # Nominate bookImplementation Considerations
- Voting system with deadline enforcement
- Discussion board with nested comments
- Real-time updates (WebSockets or polling)
- Notification preferences per club
- Admin action audit log
- Calendar integration (export meetings)
- Discussion moderation tools