Social Media Feed
Content & Social · React + Node (Express) · 22 @molecule/* packages
Instagram-like social with posts, stories, followers, and feed — with built-in Stripe-backed subscription tiers
Try it
Opens instantly. Runs on sample data, so changes reset on reload.
What is inside
Screens (14)
- Landing
/ - Login
/login - Signup
/signup - ForgotPassword
/forgot-password - ResetPassword
/reset-password - Feed
/feed(signed in) - Profile
/profile/:handle(signed in) - PostDetail
/posts/:id(signed in) - Explore
/explore(signed in) - Messages
/messages(signed in) - Notifications
/notifications(signed in) - Settings
/settings(signed in) - Search
/search(signed in) - Pricing
/pricing
Data model (17 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
- dm_messages — id, dm_thread_id, sender_id, content, media_url, seen_at, created_at
- dm_threads — id, user_a_id, user_b_id, last_message_at, created_at
- follows — id, followerId, targetType, targetId, createdAt, updatedAt
- moderation_reports — id, reporter_id, target_type, target_id, reason, status, resolution, resolved_by, …
- notifications — id, user_id, type, actor_id, target_type, target_id, body, href, …
- post_comments — id, post_id, user_id, parent_id, body, created_at, updated_at
- post_likes — id, post_id, user_id, created_at
- posts — id, user_id, caption, media_urls, thumbnail_url, hashtags, location, visibility, …
- reactions — id, resourceType, resourceId, userId, type, createdAt, updatedAt
- stories — id, user_id, media_url, caption, view_count, visibility, created_at, expires_at
- story_views — id, story_id, viewer_id, viewed_at
- user_follows — id, follower_id, following_id, created_at
API (10 handlers)
- \_notify
api/src/handlers/_notify.ts - feed
api/src/handlers/feed.ts - follows
api/src/handlers/follows.ts - messages
api/src/handlers/messages.ts - moderation
api/src/handlers/moderation.ts - notifications
api/src/handlers/notifications.ts - posts
api/src/handlers/posts.ts - preferences
api/src/handlers/preferences.ts - stories
api/src/handlers/stories.ts - users
api/src/handlers/users.ts
Subscription tiers
free / pro / team — gated by: maxFollows, maxPosts, maxStories, advancedFeatures, canExport, retentionDays
Built from 22 @molecule/* packages
@molecule/api-content-moderation@molecule/api-database-postgresql@molecule/api-email-templates@molecule/api-emails-mailgun@molecule/api-entitlements@molecule/api-image-sharp@molecule/api-payments-stripe@molecule/api-push-notifications-web-push@molecule/api-realtime-socketio@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-user@molecule/api-uploads-s3@molecule/app-billing-react@molecule/app-gallery@molecule/app-image-crop@molecule/app-realtime-socketio@molecule/app-virtual-scroll
Required secrets
DATABASE_URLPostgreSQL connection stringS3_BUCKETS3 bucket for media uploadsS3_ACCESS_KEY_IDS3 access keyS3_SECRET_ACCESS_KEYS3 secret keyVAPID_PUBLIC_KEYVAPID public key for push notificationsVAPID_PRIVATE_KEYVAPID private key for push notifications
The @molecule/* packages are Apache-2.0. The app you build from this template is yours to export and self-host. Licensing