Team Chat
Communication · React + Node (Express) · 22 @molecule/* packages
Slack-like workspace chat with channels, threads, reactions, file sharing, and integrations — including a built-in subscription tier (Free / Pro / Team) backed by Stripe
Quick preview
Opens instantly. Runs on sample data, so changes reset on reload.
What is inside
Screens (8)
- Dashboard
/(signed in) - Channel
/channels/:channelId(signed in) - Thread
/channels/:channelId/threads/:messageId(signed in) - Login
/login - Signup
/signup - ForgotPassword
/forgot-password - ResetPassword
/reset-password - Settings
/settings(signed in)
Data model (13 tables)
- activities — id, actorId, action, resourceType, resourceId, metadata, createdAt
- activity_seen_status — userId, lastSeenActivityId, updatedAt
- channel_members — id, channel_id, user_id, role, joined_at, updated_at, updatedAt
- channels — id, created_by, workspace_id, name, description, topic, is_private, is_archived, …
- devices — id, createdAt, updatedAt, userId, name, pushPlatform, pushSubscription, hasPushSubscription
- messages — id, channel_id, user_id, content, is_edited, edited_at, is_pinned, pinned_at, …
- notifications — id, createdAt, updatedAt
- reactions — id, message_id, user_id, emoji, created_at, updatedAt
- thread_messages — id, threadId, userId, body, editedAt, createdAt, updatedAt
- thread_read_status — threadId, userId, lastReadMessageId, updatedAt
- thread_replies — id, parent_message_id, channel_id, user_id, content, is_edited, edited_at, created_at, …
- threads — id, title, creatorId, resourceType, resourceId, closed, createdAt, updatedAt
- payments — id, createdAt, updatedAt, userId, transactionId, productId, platformKey, data, …
API (5 handlers)
- channels
api/src/handlers/channels.ts - members
api/src/handlers/members.ts - messages
api/src/handlers/messages.ts - reactions
api/src/handlers/reactions.ts - threads
api/src/handlers/threads.ts
Subscription tiers
free / pro / team — gated by: maxChannels, maxMembers, maxMessagesPerDay, retentionDays, fileUploadMb, customEmoji, threadsEnabled, voiceVideoCalls, externalIntegrations
Built from 22 @molecule/* packages
@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-push-notifications-web-push@molecule/api-realtime-socketio@molecule/api-resource-activity-feed@molecule/api-resource-notification@molecule/api-resource-payment@molecule/api-resource-user@molecule/api-search-meilisearch@molecule/api-uploads-s3@molecule/app-billing-react@molecule/app-command-palette@molecule/app-file-upload@molecule/app-keyboard-shortcuts@molecule/app-markdown@molecule/app-realtime-socketio@molecule/app-shell-layout-react@molecule/app-virtual-scroll
Required secrets
DATABASE_URLPostgreSQL connection stringS3_BUCKETS3 bucket for file uploadsMAILGUN_API_KEYMailgun API key for email notifications
The @molecule/* packages are Apache-2.0. The app you build from this template is yours to export and self-host. Licensing