Meditation App
Health & Fitness · React + Node (Express) · 17 @molecule/* packages
Headspace-like meditation app with guided sessions, timer, streaks, categories, and audio playback — 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 - Home
/home(signed in) - Library
/library(signed in) - SessionPlayer
/sessions/:id(signed in) - Courses
/courses(signed in) - Journal
/journal(signed in) - Stats
/stats(signed in) - Settings
/settings(signed in) - CourseDetail
/courses/:id(signed in) - Profile
/profile(signed in) - Notifications
/notifications(signed in) - Search
/search(signed in)
Data model (11 tables)
- devices — id, createdAt, updatedAt, userId, name, pushPlatform, pushSubscription, hasPushSubscription
- journal_entries — id, user_id, session_id, title, body, mood, tags, written_at, …
- meditation_categories — id, slug, label, description, hero_image_key, display_order, is_active, created_at, …
- meditation_course_days — id, course_id, day_number, session_id, title, prep_text, created_at
- meditation_courses — id, slug, title, description, day_count, hero_image_key, is_premium, is_published, …
- meditation_history — id, user_id, session_id, course_id, started_at, completed_at, duration_seconds, reflection_id, …
- meditation_sessions — id, category_id, slug, title, description, duration_seconds, difficulty, instructor_name, …
- notifications — id, user_id, kind, payload, read_at, created_at
- user_favorites — id, user_id, session_id, course_id, created_at
- user_preferences — id, user_id, voice, default_duration_minutes, reminder_enabled, reminder_time, autoplay_next, weekly_goal_minutes, …
- payments — id, createdAt, updatedAt, userId, transactionId, productId, platformKey, data, …
API (9 handlers)
- categories
api/src/handlers/categories.ts - courses
api/src/handlers/courses.ts - favorites
api/src/handlers/favorites.ts - history
api/src/handlers/history.ts - journal
api/src/handlers/journal.ts - notifications
api/src/handlers/notifications.ts - preferences
api/src/handlers/preferences.ts - sessions
api/src/handlers/sessions.ts - stats
api/src/handlers/stats.ts
Subscription tiers
free / pro / team — gated by: maxCategories, maxHistory, maxSessions, maxStats, advancedFeatures, canExport, retentionDays
Built from 17 @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-reporting-database@molecule/api-resource-payment@molecule/api-resource-user@molecule/api-search-meilisearch@molecule/api-uploads-s3@molecule/app-audio-howler@molecule/app-billing-react@molecule/app-calendar@molecule/app-charts@molecule/app-command-palette
Required secrets
DATABASE_URLPostgreSQL connection stringMEILISEARCH_API_KEYMeilisearch API keyVAPID_PUBLIC_KEYVAPID public key for push notificationsVAPID_PRIVATE_KEYVAPID private key for push notificationsS3_BUCKETS3 bucket for audio filesS3_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