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

Open in Molecule

Try it

Opens instantly. Runs on sample data, so changes reset on reload.

Open preview in a new tab ↗View workspace ↗

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

Browse all @molecule/* packages →

Required secrets

  • DATABASE_URL PostgreSQL connection string
  • VAPID_PUBLIC_KEY VAPID public key for push notifications
  • VAPID_PRIVATE_KEY VAPID private key for push notifications
  • STRIPE_SECRET_KEY Stripe secret API key (sk_test_... in test mode)
  • STRIPE_WEBHOOK_SECRET Stripe 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