← All templates

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

Open in Molecule

What is inside

  • auth
  • realtime
  • search
  • notifications
  • file-upload
  • threads
  • subscriptions

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

Browse all @molecule/* packages →

Required secrets

  • DATABASE_URL PostgreSQL connection string
  • S3_BUCKET S3 bucket for file uploads
  • MAILGUN_API_KEY Mailgun 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