Shrewsbury Book Club
Shrewsbury Book Club is a monorepo (pnpm workspace) for a real book club (est. 2022). It includes an Expo mobile app for members and a Vite + React web dashboard for managing content. Members sign in with phone number and PIN; Firebase Cloud Functions verify PINs and issue custom tokens for secure auth.
For members
On the mobile app, members get everything in one place. They see the event calendar—which book is coming up, when and where sessions are, and how many seats are available. They can book a seat for a session so organisers know who’s coming, and mark attendance after a meeting. A ratings screen lets them rate books they’ve read, so the club has a shared sense of what landed. When it’s time to choose the next read, they vote for one of the shortlisted titles from their phone. No more scattered spreadsheets or group chats to find the schedule or sign up—it’s all in the app.
For organisers
The web dashboard is for the people running the club. They add and edit books (covers, authors, descriptions) and venues (name, address, capacity). They build the schedule: which book is featured in which month and how many sessions (e.g. three evenings per book). They open and close voting periods so members can pick the next book, then set the winner as the next scheduled pick. They can seed or adjust data (e.g. for a new season) and keep the mobile app in sync. The goal is to spend less time on admin and more on the club itself.
Features
- Mobile app (Expo) – Event calendar, session booking, attendance tracking, and ratings. Members see scheduled books, venues, and session times; book a seat and mark attendance.
- Web dashboard – Manage books, venues, and schedule; run voting periods for the next pick; seed and maintain data.
- Auth – Phone number + PIN; PINs verified server-side via Cloud Functions, then Firebase custom token sign-in.
- Shared package – Zod schemas and types shared between mobile and web (books, sessions, venues, attendance, voting).
- Firebase – Firestore for data, Auth for sign-in, Cloud Functions for token generation; optional emulator suite for local dev.
- Dark teal and gold branding; NativeWind/Tailwind on mobile and Tailwind on web.
Tech stack
- React / Expo (Expo Router) for the cross-platform mobile app
- Vite + React for the web dashboard
- Firebase (Auth, Firestore, Cloud Functions)
- Tailwind / NativeWind for styling
- TypeScript and pnpm workspaces across the monorepo
Built to keep a real book club organised and visible to everyone—from schedule to voting to attendance.