← All templates

Health Records

Health & Fitness · React + Node (Express) · 24 @molecule/* packages

MyChart-like personal health records with conditions, medications, labs, vitals, immunizations, and document management — with built-in Stripe-backed subscription tiers

Open in Molecule

What is inside

  • auth
  • search
  • notifications
  • file-upload
  • permissions
  • encryption
  • reporting
  • pdf-export
  • subscriptions

Screens (21)

  • Landing /
  • Login /login
  • Signup /signup
  • ForgotPassword /forgot-password
  • ResetPassword /reset-password
  • Dashboard /dashboard (signed in)
  • Records /records (signed in)
  • Medications /medications (signed in)
  • LabResults /labs (signed in)
  • Documents /documents (signed in)
  • Sharing /sharing (signed in)
  • Settings /settings (signed in)
  • RecordDetail /records/:id (signed in)
  • MedicationDetail /medications/:id (signed in)
  • LabResultDetail /labs/:id (signed in)
  • Immunizations /immunizations (signed in)
  • Visits /visits (signed in)
  • VisitDetail /visits/:id (signed in)
  • Notifications /notifications (signed in)
  • Profile /profile (signed in)
  • InviteShare /sharing/new (signed in)

Data model (15 tables)

  • allergies — id, user_id, allergen, substance, category, reaction, severity, onset_date, …
  • conditions — id, user_id, name, icd10_code, status, severity, onset_date, resolution_date, …
  • devices — id, createdAt, updatedAt, userId, name, pushPlatform, pushSubscription, hasPushSubscription
  • immunizations — id, user_id, vaccine_name, cvx_code, dose_number, series_total, administered_date, administered_at, …
  • lab_result_values — id, result_id, user_id, test_name, value, unit, reference_low, reference_high, …
  • lab_results — id, user_id, panel_name, test_name, category, ordered_by, ordering_provider, performing_lab, …
  • medical_documents — id, user_id, title, kind, category, s3_key, file_url, file_name, …
  • medications — id, user_id, name, generic_name, dosage, frequency, route, prescriber, …
  • notifications — id, user_id, kind, payload, read_at, created_at
  • permission_grants — id, owner_user_id, recipient_email, recipient_user_id, recipient_name, role, scope, starts_at, …
  • visit_diagnoses — id, visit_id, user_id, condition_id, icd10_code, description, created_at
  • visit_orders — id, visit_id, user_id, kind, description, status, created_at
  • visits — id, user_id, provider_id, provider_name, clinic_name, scheduled_at, completed_at, chief_complaint, …
  • vitals — id, user_id, recorded_at, vital_type, value, secondary_value, unit, blood_pressure_sys, …
  • payments — id, createdAt, updatedAt, userId, transactionId, productId, platformKey, data, …

API (14 handlers)

  • \_seed api/src/handlers/_seed.ts
  • allergies api/src/handlers/allergies.ts
  • conditions api/src/handlers/conditions.ts
  • documents api/src/handlers/documents.ts
  • immunizations api/src/handlers/immunizations.ts
  • labs api/src/handlers/labs.ts
  • medications api/src/handlers/medications.ts
  • notifications api/src/handlers/notifications.ts
  • profile api/src/handlers/profile.ts
  • records api/src/handlers/records.ts
  • sharing api/src/handlers/sharing.ts
  • stats api/src/handlers/stats.ts
  • visits api/src/handlers/visits.ts
  • vitals api/src/handlers/vitals.ts

Subscription tiers

free / pro / team — gated by: maxAllergies, maxConditions, maxDocuments, maxImmunizations, maxLabs, maxMedications, maxVitals, advancedFeatures, canExport, retentionDays

Built from 24 @molecule/* packages

Browse all @molecule/* packages →

Required secrets

  • DATABASE_URL PostgreSQL connection string
  • MEILISEARCH_API_KEY Meilisearch API key
  • ENCRYPTION_KEY AES encryption key for PHI data
  • VAPID_PUBLIC_KEY VAPID public key for push notifications
  • VAPID_PRIVATE_KEY VAPID private key for push notifications
  • MAILGUN_API_KEY Mailgun API key for email notifications
  • MAILGUN_DOMAIN Mailgun domain
  • S3_BUCKET S3 bucket for medical documents
  • S3_ACCESS_KEY_ID S3 access key ID
  • S3_SECRET_ACCESS_KEY S3 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