Book Tracker
Content & Social · React + Node (Express) · 16 @molecule/* packages
Goodreads-like reading tracker with shelves, book logging, reviews, ratings, reading challenges, and yearly stats — with built-in Stripe-backed subscription tiers
Try it
Opens instantly. Runs on sample data, so changes reset on reload.
What is inside
Screens (15)
- Landing
/ - Login
/login - Signup
/signup - ForgotPassword
/forgot-password - ResetPassword
/reset-password - Dashboard
/dashboard(signed in) - Books
/books(signed in) - BookDetail
/books/:id(signed in) - AddBook
/books/new(signed in) - Challenge
/challenge(signed in) - Reviews
/reviews(signed in) - Stats
/stats(signed in) - Notifications
/notifications(signed in) - Settings
/settings(signed in) - Profile
/profile(signed in)
Data model (8 tables)
- books — id, user_id, title, author, page_count, genres, cover_style, description, …
- user_books — id, user_id, book_id, shelf, current_page, started_at, finished_at, rating, …
- reading_sessions — id, user_book_id, user_id, date, minutes, pages_read, note, created_at, …
- reading_challenges — id, user_id, year, goal_books, created_at, updated_at
- notifications — id, user_id, type, title, body, href, read, created_at
- devices — id, createdAt, updatedAt, userId, name, pushPlatform, pushSubscription, hasPushSubscription
- tags — id, name, slug, color, description, createdAt, updatedAt
- resource_tags — id, tagId, resourceType, resourceId, createdAt
API (9 handlers)
- \_reading
api/src/handlers/_reading.ts - books
api/src/handlers/books.ts - challenge
api/src/handlers/challenge.ts - notifications
api/src/handlers/notifications.ts - profile
api/src/handlers/profile.ts - reports
api/src/handlers/reports.ts - reviews
api/src/handlers/reviews.ts - sessions
api/src/handlers/sessions.ts - stats
api/src/handlers/stats.ts
Subscription tiers
free / pro / team — gated by: maxBooks, maxReviews, advancedFeatures, canExport, retentionDays
Built from 16 @molecule/* packages
@molecule/api-cron-node-cron@molecule/api-database-postgresql@molecule/api-email-templates@molecule/api-emails-mailgun@molecule/api-entitlements@molecule/api-payments-stripe@molecule/api-push-notifications-web-push@molecule/api-reporting-database@molecule/api-resource-payment@molecule/api-resource-tag@molecule/api-resource-user@molecule/app-billing-react@molecule/app-command-palette-cmdk@molecule/app-keyboard-shortcuts-hotkeys@molecule/app-notification-feed-react@molecule/app-sidebar-layout-react
Required secrets
DATABASE_URLPostgreSQL connection stringVAPID_PUBLIC_KEYVAPID public key for push notificationsVAPID_PRIVATE_KEYVAPID private key for push notificationsSTRIPE_SECRET_KEYStripe secret API key (sk_test_... in test mode)STRIPE_WEBHOOK_SECRETStripe webhook signing secret (whsec_...)
The @molecule/* packages are Apache-2.0. The app you build from this template is yours to export and self-host. Licensing