Telemedicine
Health & Fitness · React + Node (Express) · 24 @molecule/* packages
Teladoc-like telemedicine platform with appointments, video consultations, medical records, and prescriptions — 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) - Appointments
/appointments(signed in) - Consult
/consult/:id(signed in) - AppointmentDetail
/appointments/:id(signed in) - Patients
/patients(signed in) - PatientDetail
/patients/:id(signed in) - Prescriptions
/prescriptions(signed in) - MedicalRecords
/records(signed in) - Messages
/messages(signed in) - Notifications
/notifications(signed in) - Settings
/settings(signed in)
Data model (13 tables)
- appointments — id, patient_user_id, patient_id, provider_user_id, provider_id, scheduled_at, duration_minutes, type, …
- availability_slots — id, provider_id, starts_at, ends_at, date, start_time, end_time, is_booked, …
- consultation_messages — id, consultation_id, appointment_id, sender_user_id, sender_id, sender_role, body, content, …
- consultations — id, appointment_id, patient_user_id, patient_id, provider_user_id, provider_id, started_at, ended_at, …
- devices — id, createdAt, updatedAt, userId, name, pushPlatform, pushSubscription, hasPushSubscription
- medical_records — id, patient_user_id, patient_id, provider_user_id, provider_id, consultation_id, encounter_id, kind, …
- notifications — id, user_id, kind, payload, read_at, created_at
- payments — id, createdAt, updatedAt, userId, transactionId, productId, platformKey, data, …
- pharmacies — id, name, address, phone, ncpdp_id, created_at
- prescriptions — id, appointment_id, consultation_id, provider_user_id, provider_id, patient_user_id, patient_id, drug_name, …
- providers — id, user_id, display_name, npi, license_number, license_state, specialty_id, specialty, …
- record_shares — id, record_id, owner_user_id, shared_with_provider_id, scope, expires_at, revoked_at, created_at
- specialties — id, slug, label, icon, created_at
API (8 handlers)
- \_seed
api/src/handlers/_seed.ts - appointments
api/src/handlers/appointments.ts - consultations
api/src/handlers/consultations.ts - notifications
api/src/handlers/notifications.ts - portal
api/src/handlers/portal.ts - prescriptions
api/src/handlers/prescriptions.ts - providers
api/src/handlers/providers.ts - records
api/src/handlers/records.ts
Subscription tiers
free / pro / team — gated by: maxAppointments, maxConsultations, maxPrescriptions, maxProviders, maxRecords, advancedFeatures, canExport, retentionDays
Built from 24 @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-permissions-custom@molecule/api-push-notifications-web-push@molecule/api-realtime-socketio@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-calendar@molecule/app-command-palette@molecule/app-data-table@molecule/app-file-upload@molecule/app-notification-feed-react@molecule/app-realtime-socketio@molecule/app-sidebar-layout-react@molecule/app-status-timeline-react@molecule/app-video
Required secrets
DATABASE_URLPostgreSQL connection stringMEILISEARCH_API_KEYMeilisearch API keyVAPID_PUBLIC_KEYVAPID public key for push notificationsVAPID_PRIVATE_KEYVAPID private key for push notificationsMAILGUN_API_KEYMailgun API key for email notificationsMAILGUN_DOMAINMailgun domainS3_BUCKETS3 bucket for medical documentsS3_ACCESS_KEY_IDS3 access key IDS3_SECRET_ACCESS_KEYS3 secret access key
The @molecule/* packages are Apache-2.0. The app you build from this template is yours to export and self-host. Licensing