Podcast Platform
Content & Social · React + Node (Express) · 22 @molecule/* packages
Podcast hosting with audio player, episodes, RSS, and subscriptions
Try it
Opens instantly. Runs on sample data, so changes reset on reload.
What is inside
Screens (14)
- Landing
/ - Login
/login - Signup
/signup - ForgotPassword
/forgot-password - ResetPassword
/reset-password - Discover
/discover(signed in) - ShowDetail
/shows/:id(signed in) - EpisodePlayer
/episodes/:id(signed in) - Library
/library(signed in) - Queue
/queue(signed in) - Settings
/settings(signed in) - Search
/search(signed in) - Notifications
/notifications(signed in) - Profile
/profile(signed in)
Data model (11 tables)
- chapters — id, episode_id, user_id, start_seconds, title, created_at, updatedAt
- devices — id, createdAt, updatedAt, userId, name, pushPlatform, pushSubscription, hasPushSubscription
- episodes — id, user_id, show_id, title, description, episode_number, season_number, audio_url, …
- listening_progress — id, user_id, episode_id, position_sec, completed_at, updated_at, updatedAt
- notifications — id, user_id, kind, payload, read_at, created_at, updatedAt
- payments — id, createdAt, updatedAt, userId, transactionId, productId, platformKey, data, …
- queue_items — id, user_id, episode_id, position, added_at, updatedAt
- shows — id, user_id, author_id, title, slug, description, cover_image_url, language, …
- subscriptions — id, user_id, show_id, created_at, updatedAt
- saved_episodes — id, user_id, episode_id, saved_at, updatedAt
- user_preferences — user_id, preferences, updated_at, updatedAt
API (11 handlers)
- \_seed
api/src/handlers/_seed.ts - chapters
api/src/handlers/chapters.ts - episodes
api/src/handlers/episodes.ts - feed
api/src/handlers/feed.ts - notifications
api/src/handlers/notifications.ts - profile
api/src/handlers/profile.ts - queue
api/src/handlers/queue.ts - reports
api/src/handlers/reports.ts - saved
api/src/handlers/saved.ts - shows
api/src/handlers/shows.ts - subscriptions
api/src/handlers/subscriptions.ts
Subscription tiers
free / pro / team — gated by: maxEpisodes, maxShows, maxSubscriptions, advancedFeatures, canExport, retentionDays
Built from 22 @molecule/* packages
@molecule/api-ai-anthropic@molecule/api-ai-speech-openai@molecule/api-ai-summarization@molecule/api-ai-summarization-llm@molecule/api-database-postgresql@molecule/api-email-templates@molecule/api-emails-mailgun@molecule/api-entitlements@molecule/api-payments-stripe@molecule/api-resource-comment@molecule/api-resource-follow@molecule/api-resource-payment@molecule/api-resource-reaction@molecule/api-resource-user@molecule/api-search-meilisearch@molecule/api-sitemap-xml@molecule/api-uploads-s3@molecule/app-audio-howler@molecule/app-billing-react@molecule/app-notification-feed-react@molecule/app-sidebar-layout-react@molecule/app-virtual-scroll
Required secrets
DATABASE_URLPostgreSQL connection stringMEILISEARCH_API_KEYMeiliSearch API keyS3_BUCKETS3 bucket for audio/image uploadsS3_ACCESS_KEY_IDS3 access keyS3_SECRET_ACCESS_KEYS3 secret keyOPENAI_API_KEYOpenAI API key for transcription
The @molecule/* packages are Apache-2.0. The app you build from this template is yours to export and self-host. Licensing