← All templates

Forum / Community

Content & Social · React + Node (Express) · 20 @molecule/* packages

Reddit-like discussions with threads, voting, reputation, and moderation — with built-in Stripe-backed subscription tiers

Open in Molecule

What is inside

  • auth
  • search
  • voting
  • reputation
  • moderation
  • threads
  • categories
  • subscriptions

Screens (15)

  • Landing /
  • Login /login
  • Signup /signup
  • ForgotPassword /forgot-password
  • ResetPassword /reset-password
  • Feed /feed (signed in)
  • Categories /categories (signed in)
  • ThreadView /thread/:id (signed in)
  • Compose /compose (signed in)
  • Profile /u/:username (signed in)
  • Settings /settings (signed in)
  • CategoryDetail /c/:slug (signed in)
  • Search /search (signed in)
  • Notifications /notifications (signed in)
  • ModQueue /mod (signed in)

Data model (15 tables)

  • activities — id, actorId, action, resourceType, resourceId, metadata, createdAt
  • activity_seen_status — userId, lastSeenActivityId, updatedAt
  • bookmarks — id, userId, resourceType, resourceId, folder, createdAt, updatedAt
  • comments — id, resourceType, resourceId, userId, parentId, body, editedAt, createdAt, …
  • devices — id, createdAt, updatedAt, userId, name, pushPlatform, pushSubscription, hasPushSubscription
  • follows — id, followerId, targetType, targetId, createdAt, updatedAt
  • forum_categories — id, slug, name, description, color, icon, sort_order, thread_count, …
  • moderation_reports — id, target_type, target_id, reporter_id, user_id, reason, description, status, …
  • reactions — id, resourceType, resourceId, userId, type, createdAt, updatedAt
  • replies — id, thread_id, parent_reply_id, author_id, user_id, body, body_markdown, vote_score, …
  • resource_tags — id, tagId, resourceType, resourceId, createdAt
  • tags — id, name, slug, color, description, createdAt, updatedAt
  • threads — id, slug, title, body, body_markdown, category_id, author_id, user_id, …
  • votes — id, target_type, target_id, user_id, direction, created_at, updated_at, updatedAt
  • payments — id, createdAt, updatedAt, userId, transactionId, productId, platformKey, data, …

API (7 handlers)

  • bookmarks api/src/handlers/bookmarks.ts
  • categories api/src/handlers/categories.ts
  • moderation api/src/handlers/moderation.ts
  • notifications api/src/handlers/notifications.ts
  • profiles api/src/handlers/profiles.ts
  • threads api/src/handlers/threads.ts
  • votes api/src/handlers/votes.ts

Subscription tiers

free / pro / team — gated by: maxCategories, maxModeration, maxThreads, maxVotes, advancedFeatures, canExport, retentionDays

Built from 20 @molecule/* packages

Browse all @molecule/* packages →

Required secrets

  • DATABASE_URL PostgreSQL connection string
  • MEILISEARCH_API_KEY MeiliSearch API key
  • 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