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
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 - 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 (8 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 - preferences
api/src/handlers/preferences.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
@molecule/api-content-moderation@molecule/api-database-postgresql@molecule/api-email-templates@molecule/api-emails-mailgun@molecule/api-entitlements@molecule/api-payments-stripe@molecule/api-permissions-custom@molecule/api-resource-activity-feed@molecule/api-resource-bookmark@molecule/api-resource-comment@molecule/api-resource-follow@molecule/api-resource-payment@molecule/api-resource-reaction@molecule/api-resource-tag@molecule/api-resource-user@molecule/api-search-meilisearch@molecule/app-billing-react@molecule/app-data-table@molecule/app-markdown@molecule/app-virtual-scroll
Required secrets
DATABASE_URLPostgreSQL connection stringMEILISEARCH_API_KEYMeiliSearch API keySTRIPE_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