Inkwave
An all-in-one newsletter and publishing platform for creators, journalists and organisations: an editor, a website builder, subscribe forms, referrals, paid subscriptions, sponsorships and analytics in one dashboard. The founder brought it to us with a Lovable-built site that promised all of it. We built the platform that keeps those promises: one monorepo of fourteen apps and packages, newsletters that are never sent twice, every publisher on their own domain, and analytics without cookies.
At a glance
Inkwave is an all-in-one newsletter and publishing platform for creators, journalists and organisations: an editor, a website builder, growth tools, paid subscriptions and analytics in one dashboard. The founder brought it to Plutonapps with a Lovable-built site; our engineers built the platform underneath with the founder's team: 14 apps and packages guarded by 2,978 automated tests. Inkwave is pre-launch.
Updated
- Automated tests
- 2,978
- Stack
- React · Next.js · PostgreSQL · ClickHouse
- In development since
- May 2025
- Build time
- 17 months to date
The Lovable site
What did the founder bring from Lovable?
The founder came with Inkwave's public face built in Lovable: a landing page, pricing, and a page for each of twenty platform features, from the editor and web builder to referrals, paid subscriptions and the ad network. Every page was a promise the product had to keep, and the code behind it had grown across seven separate repositories. Our job was to make it one platform that can be trusted with a publisher's audience and income.
The divide
What did Plutonapps engineer?
The prototype risk
Engineered by Plutonapps
A platform where every publisher brings a domain can be tricked into issuing certificates for domains nobody connected, or into serving one publisher's site under another's name.
Every publisher on their own domain
Before a certificate is issued, the edge asks the platform whether the domain belongs to a publication; the check fails closed and compares its shared secret in constant time. The site renderer maps each hostname to its publication and strips any identity header a visitor could forge.
Two editors, or an editor and an AI assistant, saving the same page at once silently overwrite each other, and a half-finished draft leaks onto the live site.
A website builder that cannot lose work
Every page's block tree carries a revision number, and a save made against an old revision is refused instead of merged blind. Live sites serve the published snapshot, never the draft, and an unpublished site answers 404. One shared block-schema package validates and repairs every block in the editor, the renderer and the API alike.
A send that dies halfway through a list and retries from the start emails thousands of readers twice.
Newsletters that go out exactly once
Each broadcast runs as a durable workflow on Restate, sent in batches of 100 recipients. Every batch is recorded as done exactly once, so a retry picks up where it stopped and never re-sends. Delivery webhooks are signature-checked, and a postal address is required before anything is sent.
Open and click counts are inflated by mail-privacy proxies and bots, and per-reader tracking cookies are a consent problem in every market.
Analytics without cookies
Events are batched into ClickHouse, flushed at 50 events or every three seconds, and visitors are counted with a hash salted per day, so no cookie is set and nobody can be followed from one day to the next. Apple Mail privacy and bot opens are separated from real ones, and activity data expires after 18 months by table rule, not by a job someone has to remember.
In a multi-tenant product, one missing check lets a publisher read or change another publisher's audience.
Every write inside its own publication
Sign-in moved from Firebase to Clerk, with tokens verified locally. Writes are scoped to the caller's publication in a shared service layer, and live-collaboration sockets re-check editing rights against the database on every connect. The AI-assistant (MCP) server never takes a publication from the request: the credential decides it, with consent and a budget on every write.
Money moving between readers, publishers and the platform is where a missing webhook becomes a missing payment nobody notices.
Paid subscriptions that reconcile
Publishers sell paid subscriptions through Stripe Connect while the platform bills publishers, and every Stripe webhook is signature-checked. Failed payments are stored, not logged and dropped, and refunds and subscription history are written from webhooks, so both sides keep an invoice trail.
2,978
Automated tests guarding the platform.
Up from 326 on 6 August 2026, days after the seven repositories came together in one monorepo: nine times the tests in eight weeks, across 280 test files and 105 merged pull requests.
Guarantees
What we hold ourselves to while it runs.
Sending
Durable batches of 100, never sent twice
Tenancy
Every write scoped to its own publication
Own domains
Certificates only after a fail-closed check
Privacy
Cookieless analytics and an append-only audit log
Results
What were the results?
- Automated tests across 280 test files
- 2,978
- The tests in eight weeks: 326 on 6 August 2026
- 9×
- Pull requests merged, 11 August to 29 September 2026
- 105
- Apps and packages in one monorepo, from seven repositories
- 14
- PostgreSQL tables under versioned migrations
- 100
- End-to-end journeys run against a deployed environment
- 15
Stack and timeline
- Product
- Newsletter and publishing platform (B2B SaaS)
- Built in Lovable
- The public site: landing page, pricing and twenty feature pages
- Apps
- Publisher dashboard, public-site renderer, API, analytics, operator console, AI-assistant (MCP) server, migrator and two verification runners
- Stack
- React 19 · Vite · TanStack Router · Next.js 16 · Hono · GraphQL · PostgreSQL · Drizzle · ClickHouse · Restate · Clerk · Stripe Connect · Resend · Bun
- Timeline
- First commit May 2025 · one monorepo from July 2026 · 105 pull requests merged 11 August to 29 September 2026
- Privacy
- Cookieless analytics, 18-month retention by table rule, per-publication cookie banner and consent settings, append-only audit log
- Status
- Pre-launch, deployed to staging on every merge
Engineered & run by Pod 03
Daniel Roth · engineerAnja Lind · key account manager
Monitored around the clock. When something goes wrong at three in the morning, Daniel is the one who answers.
Example team. Names are illustrative.
Questions
What else do people ask about Inkwave?
What is Inkwave?
An all-in-one newsletter and publishing platform for creators, journalists and organisations: a newsletter editor, a website builder, subscribe forms, referrals, paid subscriptions, sponsorships and analytics in one dashboard.
What was built in Lovable?
Inkwave's public site: the landing page, pricing and a page for each of twenty platform features. The product itself is a TypeScript monorepo our engineers built with the founder's team.
What did Plutonapps build for Inkwave?
The platform underneath: newsletter sending that never goes out twice, publishers' own domains, a website builder that cannot lose work, cookieless analytics, tenant isolation, Stripe Connect payments and an AI-assistant server, in one monorepo of fourteen apps and packages.
How is Inkwave tested?
By 2,978 automated tests across 280 files, up from 326 in eight weeks, plus 15 end-to-end journeys and 11 liveness probes run against a deployed environment.
Is Inkwave live?
Not yet. Inkwave is pre-launch: every merge deploys to a staging environment while the platform is hardened for launch.
Everything you have just read runs on our Starter plan. It is the plan we start everyone on.
Bring us what you made. We will build it like this.
Billed yearly. Month to month is $3,999 per month.