core

A variant of Newsletter Platform.

View the interactive variant page →

Newsletter Platform

Part of the worlds-biggest-software-project initiative.

An AI-native, open alternative to Substack and beehiiv that gives independent writers and media teams full ownership of their audience, their revenue, and their growth stack.

Newsletter Platform is an end-to-end publishing system covering subscriber management, paid subscriptions, automation, analytics, and growth tooling. It targets independent journalists, creators, brand and marketing teams, and multi-property media companies who want a Substack alternative without revenue cuts or platform lock-in.

New here? Read user-docs/READ-ME-FIRST.md — a plain-language introduction to what this is, what it does, and what to do first. It is honest about the rough edges; this file is the elevator pitch.


Why Newsletter Platform?

  • Substack takes a 10% cut of paid subscription revenue, which becomes expensive for any publication earning more than ~$390/month from subscribers.
  • Existing zero-cut platforms (beehiiv, Kit, Ghost) are either proprietary SaaS or — in Ghost's case — open source but lacking modern growth tooling and built-in discovery.
  • Apple Mail Privacy Protection has eroded open-rate reliability, yet most platforms still default to opens as their primary engagement metric instead of scroll depth, click heatmaps, or referral tracking.
  • Creator monetisation is fragmenting across paid subscriptions, ad networks, referral marketplaces (beehiiv Boosts), digital products (Kit), and podcasting — but no open-source platform unifies these revenue streams.
  • AI writing assistance, churn prediction, and ML-based segmentation are becoming differentiating features on growth platforms, leaving an open-source AI-native gap.

Key Features

Publishing & Email Delivery

  • Rich-text editor with optimistic-concurrency protection against colliding saves
  • Drafts, scheduled posts, a published archive, and RSS/Atom feeds
  • SMTP or Resend delivery, with a configurable fallback transport
  • DKIM/SPF/DMARC verification enforced — sending is refused until the domain authenticates
  • Exactly-once sending: one message per recipient per campaign, guaranteed by a database constraint rather than a hopeful check
  • Multipart HTML and plain text, physical address in every footer, and RFC 8058 one-click unsubscribe

Subscriber & Audience Management

  • Double opt-in by default, with the consent evidence recorded and queryable
  • CSV import with a per-row outcome report, not just a total
  • Tagging and rule-based segments that stay accurate on their own
  • Suppression that survives erasure, so unsubscribing sticks
  • GDPR Article 17 erasure that pseudonymises rather than deletes — keeping the payment record, destroying the identity
  • Step-based automation sequences that re-check exits and the frequency cap before every step

Monetisation

  • Stripe-native paid subscriptions with zero platform revenue cut — your account, your payouts
  • Multiple tiers, per-post gating, dunning and grace periods
  • Replay-safe webhook handling, so a re-sent Stripe event cannot double-grant

Growth Infrastructure

  • Landing pages and signup forms, tracked separately so you can see which convert
  • Referrals credited on confirmation, never on submission — with rejected attempts recorded rather than silently dropped
  • Acquisition source captured per subscriber
  • Cross-publication recommendations within your own instance

Analytics & Insights

  • Clicks and scroll depth as the primary engagement measures
  • Machine opens separated out and labelled, because post-MPP open rates are not trustworthy
  • Bounce and complaint reporting alongside engagement
  • CSV export generated from the same queries as the screen, with a test asserting they agree

AI-Native Advantage

AI is optional and gated behind a configurable provider — no feature hard-depends on a proprietary service, and with no provider configured the AI endpoints return a distinct ai_not_configured status while everything else is unaffected.

What is built: a drafting assistant working from excerpts of the publication's own archive so output matches the writer's voice, always labelled AI-generated and never publishable without a person acting; deterministic churn scoring that exposes the signals and weights behind every score, so a retention offer can be argued with; and segment suggestions that show their size and exact criteria before adoption.

Churn scoring is deliberately not a language model — it is SQL, and the same inputs always give the same output.


Tech Stack & Deployment

Fastify 5 and Next.js 15 on Node 22, PostgreSQL 16 as the system of record, Redis 7 for queueing only (it is treated as ephemeral — losing it costs a delay, not data), Drizzle, BullMQ, prom-client and pino. Self-hosted via Docker Compose, or the single-container standalone image for evaluation. Stripe for paid subscriptions, SMTP or Resend for delivery, DKIM/SPF/DMARC for inbox placement, RSS/Atom for syndication, and a /v1 REST API with scoped publication-bound keys.

See collateral/technical/architecture.md for the design, the send path, and the reasoning behind both.

Not built

Stated plainly so nobody plans around them: RSS-to-email automation, digital product or one-off sales, Stripe Connect creator payouts, dynamic per-reader paywall positioning, podcast hosting, managed cloud hosting, a drag-and-drop automation canvas, and a platform-wide discovery network.

Everything else once listed here has since been built. Outbound event notifications are delivered; every setup task — the publication's own name and sending identity, sending domains, paid tiers, signup forms, landing pages, automation sequences, tags, reward tiers, colleague invitations and adding a subscriber by hand — has a screen; external websites can capture subscribers; and reader-facing pages ship in English and French. An automated check now asserts that no operator capability exists without a screen, so the gap cannot quietly reopen.


Market Context

The broader email marketing market exceeds $10 billion globally in 2026, with the independent newsletter tooling segment estimated in the hundreds of millions annually based on beehiiv's reported $30M annualised revenue in mid-2025. Substack has raised over $82M and beehiiv approximately $50M (including a $33M Series B in April 2024 led by NEA, Lightspeed, and Sapphire). Primary buyers are independent journalists and essayists, creator-economy operators bundling newsletters with courses or communities, brand and marketing teams pursuing owned-audience strategies, and media companies running multiple newsletter properties.


Project Status

Built and working — this is a core build.

The machinery is complete and tested: writing, sending, the audience and its consent evidence, Stripe-backed paid tiers, analytics, automations, growth and a /v1 API. What it deliberately does not have is styling, branding or decoration — it is the working engine, ready to be dressed.

Setup is done on screen. Registering a sending domain, creating paid tiers, building signup forms and landing pages, defining automation sequences, naming the publication itself and inviting colleagues all have screens, and a test asserts that nothing the API can do is missing one. Outbound event notifications are delivered. Remaining limitations are listed in user-docs/READ-ME-FIRST.md.

Contributions, feedback, and domain expertise are welcome.

Try it without installing anything

preview/ holds a self-contained evaluation image — the application, its database and a populated example publication in one container. See preview/README.md.

Documentation

PathWhat
user-docs/READ-ME-FIRST.mdStart here. Plain language, no technical background assumed
user-docs/production-setup.mdPreparing a real stage or production environment
collateral/Guides, architecture, API reference, installation, integration
target/docs/Self-hosting, demo data, security review, accessibility audit
specs/001-newsletter-platform/spec.md63 functional requirements — the authority on intended behaviour

Contributing

We welcome contributions from developers, domain experts, and potential users. Contribution guidelines have not been written yet — open an issue to discuss anything substantial before starting.

Important: All contributions must be your own original work or clearly attributed open-source material with a compatible licence. Copyright infringement and licence violations will not be tolerated and will result in immediate removal of the offending contribution. If you are unsure whether a piece of code, text, or other material is safe to contribute, open an issue and ask before submitting.


Licence

Licence to be determined. This is an open question, not an oversight — and it is a legitimate blocker for some procurement processes. Do not assume any licence until one is stated here.