Newsletter Publishing Platform

Content & Social · React + Node (Express) · 9 @molecule/* packages

Substack/beehiiv-like newsletter publishing with issues, subscriber management, open/click analytics, and paid tiers

Open in Molecule

Try it

Opens instantly. Runs on sample data, so changes reset on reload.

Open preview in a new tab ↗View workspace ↗

What is inside

Screens (19)

  • About /about
  • Dashboard /dashboard (signed in)
  • ForgotPassword /forgot-password
  • Help /help
  • IssueDetail /issues/:id/detail (signed in)
  • IssueEditor /issues/new (signed in)
  • Issues /issues (signed in)
  • Landing /
  • Login /login
  • PlanUpdated /plan-updated (signed in)
  • Pricing /pricing
  • Privacy /privacy
  • PublicIssue /issues/:id
  • ResetPassword /reset-password
  • Settings /settings (signed in)
  • Signup /signup
  • Subscribers /subscribers (signed in)
  • Terms /terms
  • Unsubscribe /unsubscribe/:token

Data model (6 tables)

  • devices — id, createdAt, updatedAt, userId, name, pushPlatform, pushSubscription, hasPushSubscription
  • subscribers — id, email, status, tier, source, token, subscribed_at, created_at, …
  • issues — id, author_id, user_id, subject, preview_text, body_md, status, publish_at, …
  • sends — id, issue_id, subscriber_id, sent_at, opened_at, clicked_at
  • issue_stats — id, issue_id, delivered, opened, clicked, updated_at
  • publication_settings — id, publication_name, from_name, created_at, updated_at

API (10 handlers)

  • \_deliver api/src/handlers/_deliver.ts
  • \_scheduled api/src/handlers/_scheduled.ts
  • \_seed api/src/handlers/_seed.ts
  • \_seed-helpers api/src/handlers/_seed-helpers.ts
  • feed api/src/handlers/feed.ts
  • issues api/src/handlers/issues.ts
  • profile api/src/handlers/profile.ts
  • settings api/src/handlers/settings.ts
  • stats api/src/handlers/stats.ts
  • subscribers api/src/handlers/subscribers.ts

Subscription tiers

free / pro / team — gated by: maxIssues, maxSubscribers, canScheduleIssues, advancedAnalytics, paidTiers, canExport

Built from 9 @molecule/* packages

Browse all @molecule/* packages →

Required secrets

  • DATABASE_URL PostgreSQL connection string
  • STRIPE_SECRET_KEY Stripe secret API key (sk_test_... in test mode)
  • STRIPE_WEBHOOK_SECRET Stripe webhook signing secret (whsec_...)

The @molecule/* packages are Apache-2.0. The app you build from this template is yours to export and self-host. Licensing