Video Conferencing
Communication · React + Node (Express) · 15 @molecule/* packages
Zoom-like video meetings with WebRTC, screen sharing, recording, and chat — with built-in Stripe-backed subscription tiers
Try it
Opens instantly. Runs on sample data, so changes reset on reload.
What is inside
Screens (16)
- Landing
/ - Login
/login - Signup
/signup - ForgotPassword
/forgot-password - ResetPassword
/reset-password - Dashboard
/dashboard(signed in) - Schedule
/schedule(signed in) - Lobby
/meeting/:id/lobby(signed in) - Meeting
/meeting/:id(signed in) - Recordings
/recordings(signed in) - Settings
/settings(signed in) - MeetingDetail
/meeting/:id/details(signed in) - RecordingDetail
/recordings/:id(signed in) - Notifications
/notifications(signed in) - Billing
/billing(signed in) - TeamMembers
/team-members(signed in)
Data model (9 tables)
- devices — id, createdAt, updatedAt, userId, name, pushPlatform, pushSubscription, hasPushSubscription
- meeting_chat — id, meeting_id, user_id, guest_name, content, created_at, updatedAt
- meeting_invites — id, meeting_id, invitee_email, invitee_user_id, token, sent_at, accepted_at, created_at, …
- meeting_participants — id, meeting_id, user_id, guest_name, role, joined_at, left_at, audio_enabled, …
- meetings — id, workspace_id, host_id, title, description, status, starts_at, ends_at, …
- notifications — id, user_id, type, title, body, data, read_at, created_at, …
- recordings — id, meeting_id, owner_id, video_url, thumbnail_url, duration_ms, size_bytes, status, …
- workspace_members — id, workspace_id, user_id, role, joined_at, created_at, updatedAt
- workspaces — id, owner_id, name, slug, plan_key, seat_limit, created_at, updated_at, …
API (8 handlers)
- chat
api/src/handlers/chat.ts - invites
api/src/handlers/invites.ts - meetings
api/src/handlers/meetings.ts - notifications
api/src/handlers/notifications.ts - participants
api/src/handlers/participants.ts - recordings
api/src/handlers/recordings.ts - workspace-members
api/src/handlers/workspace-members.ts - workspaces
api/src/handlers/workspaces.ts
Subscription tiers
free / pro / team — gated by: maxChat, maxMeetings, maxParticipants, maxRecordings, advancedFeatures, canExport, retentionDays
Built from 15 @molecule/* packages
@molecule/api-cron-node-cron@molecule/api-database-postgresql@molecule/api-email-templates@molecule/api-emails-mailgun@molecule/api-entitlements@molecule/api-payments-stripe@molecule/api-push-notifications-web-push@molecule/api-realtime-socketio@molecule/api-resource-notification@molecule/api-resource-payment@molecule/api-resource-user@molecule/api-uploads-s3@molecule/app-billing-react@molecule/app-calendar@molecule/app-realtime-socketio
Required secrets
DATABASE_URLPostgreSQL connection stringS3_BUCKETS3 bucket for recordingsMAILGUN_API_KEYMailgun API key for meeting invitesTURN_SERVER_URLTURN server URL for WebRTC relayTURN_SERVER_SECRETTURN server shared secret
The @molecule/* packages are Apache-2.0. The app you build from this template is yours to export and self-host. Licensing