Build a Kit alternative

Build a Kit alternative as subscribers, markdown broadcasts, and a send. $29–$79 a month is rent you can cancel after one weekend of real letters.

  • getting-started
  • vibe-coding
  • scope

You can build a Kit alternative as a subscriber table, a markdown broadcast, and a send that honors unsubscribe. Kit is that product. The catalog line is “A creator newsletter without the creator-economy cockpit.”

You pay $29–$79 a month for it. That is $348–$948 a year. The basic replacement is 10 hours: subscribers and markdown broadcasts.

I would ship this if I still rented a creator cockpit to mail people who already asked. It is marked Weekend. The verdict on the card is “Creator-sized is buildable”.

Last time I wrote about building a ClickUp alternative. That was a teardown. This one is a regular backlog topic. Paid newsletters and the recommendation network stay on the skip row.

What you need to build a Kit alternative

The Kit page splits the work into three rows.

The first row is the one you want this weekend. A public signup that stores consent. A table of subscribers with a status. A markdown editor with a reusable header and footer. A test send. A real send that writes one delivery row per person. An unsubscribe link that works without a login.

The second row is 4 days. A welcome sequence, tags, a public archive, and send stats. Do that after one real letter has gone out to people you already mail.

The third row is a month and up. Paid newsletters, a recommendations network, visual automations. The table labels that row as the part you should skip.

If you tell an agent to “clone Kit”, it aims at the third row. Copy the prompt, then pin it to the first one.

The card lists Subscriber, Tag, Broadcast, SequenceStep, Delivery. These ten hours you need Subscriber, Broadcast, and Delivery. A subscriber has an email, a status, and a consent note. A broadcast is a frozen subject and body. A delivery is one attempt to one person. Tags and sequence steps wait until you have two kinds of reader.

Status is a real field, not a boolean. Pending has not confirmed. Active may be mailed. Unsubscribed and bounced must never enter a send audience. Every future query goes through one helper that returns active only.

How a Kit alternative is put together

I am describing the catalog’s model here, not reverse-engineering Kit. A creator letter is a list you own, an issue you write once, and a worker that hands each row to an email provider.

Your browser talks to one Astro app. Node.js plus Astro is the catalog default. Use TanStack Start if React is your weekday language. The capability line is Astro, D1, and Workers.

The app writes the draft on the request. D1 holds the rows. A Worker walks queued deliveries and talks to the email provider. The page that hits Send must not wait on every inbox. Preview happens in the browser from the same frozen markdown. The public archive and the RSS feed wait on the 4-day row.

YOUR BROWSER Dashboard, editor, subscribers login required ASTRO APP ON THE REQUEST Draft, preview, queue Never waits on every inbox D1 HOLDS THE ROWS Subscriber, Broadcast, Delivery Active only enters a send WORKER WALKS DELIVERIES One row, one provider call Idempotency key per pair EMAIL PROVIDER Transactional send Bounce webhook comes back ARCHIVE AND RSS LATER Same frozen markdown 4-day row, not the weekend Paid recs stay on the skip row
Draft and queue happen on the request. The worker talks to the provider. The archive waits.

Every query is scoped by owner. A guessed subscriber id from another account returns nothing. The sending domain sits on the publication, not on each issue, so the From line stays honest.

The guardrail on the card: implement verified unsubscribe, bounce handling, and consent logging before sending. Store the source and the time when someone joins. A hard bounce flips the row to bounced on the webhook. Soft bounces can wait for a counter on the 4-day row.

Give every broadcast-and-subscriber pair a stable key. A retried worker must not mail Ada twice.

Screens of a Kit alternative

v1 needs the dashboard, the editor, and the subscriber table. If the agent starts a recommendation network or a paid checkout, send it back.

Publication dashboard

Home. How many people are active. The last send. A warning if the sending domain is not verified yet. A button that opens a blank broadcast.

Do not send until the domain check is green. A test from an unverified domain often lands in spam.

WIREFRAME · DASHBOARD Bootcamp Weekly 184 active people Last send 24 Oct What shipped this week letter.flaviocopes.com sending domain verified COMPOSE BROADCAST PEOPLE
Home is a count, the last letter, and a compose button. Domain first.

Broadcast editor

Subject, preview text, markdown body. The header and footer sit around the preview so you see the chrome readers get. A test field that mails only you. Send now.

Scheduling is the 4-day row. This weekend, write it and send it.

When you hit send, freeze the subject, the body, and the audience query. Later edits to the draft must not change a letter that is already leaving.

WIREFRAME · EDITOR SUBJECT What shipped this week MARKDOWN Four posts went out. The invoice one is live. EMAIL PREVIEW header · body · footer unsubscribe link at the bottom TEST ME SEND NOW
The preview is the write. Send freezes the markdown before the worker starts.

Subscriber table

Email, status, source, joined date. Search. A CSV import that previews rows before it writes. Suppress and export.

Import only addresses you already have consent for. Write the source as import and keep the date. A row without consent does not become active.

Ada Rossi is [email protected], active, source footer-form. A bounced row stays visible so you do not re-add it from a stale CSV.

WIREFRAME · SUBSCRIBERS [email protected] active · footer-form · 12 Oct [email protected] pending · confirm sent [email protected] bounced · import · do not mail Import CSV · export · suppress
Pending and bounced stay on the table. Only active is in the send query.

How does Kit work as a send loop

The loop is collect consent, write one issue, send it once, and honor the exit.

Ada types [email protected] on the public form and checks the consent box. The app stores pending until she hits the confirm link. That confirm can wait for the 4-day row. If you skip it this weekend, still store the source and the time. Do not import a list you cannot explain.

You write What shipped this week. The preview shows header, body, footer, and the unsubscribe link. Send freezes that snapshot. It inserts one delivery per active subscriber. The worker sends those rows. A retry hits the unique key and stops.

ADA JOINS WITH CONSENT [email protected], source stored WRITE THE ISSUE What shipped this week PREVIEW THE EMAIL Header, body, footer, unsub QUEUE THE SEND One delivery per active row WORKER DELIVERS Retry hits the unique key Unsubscribe sticks Queued rows skip Ada too
The 10-hour v1 is join, write, preview, queue, deliver, and honor the exit.

The unsubscribe page is one confirmation. No login. The signed token names the subscriber. A tampered token unsubscribes nobody. The change is immediate. Deliveries that are queued and not yet sent skip that address too.

A provider complaint is an unsubscribe. Treat it the same night.

Who a Kit alternative is for

The audience on the page is one creator publishing emails and a public archive. A weekly letter. A launch note. The same issue later on the web.

The goal is write once, email the people who asked, and stop when they leave.

If you need paid recommendations, commerce, or a second publication under the same login, keep paying. The site puts that rebuild at a month on purpose.

The same v1 also replaces beehiiv and Buttondown if what you wanted was a list and a letter.

What not to build in a Kit clone

Leave out paid newsletters, a recommendations network, visual automations, and multiple publications.

The non-goal on the page already names those. A template marketplace is a different product. Paste the skip row when the agent starts them.

A landing page with no list is Carrd, $2–$4 a month, about 2 hours. I would not grow the archive into a site builder.

Kit alternative or a Mailchimp list

Kit is a creator letter. Mailchimp is a company list with a campaign.

Mailchimp is $20–$350 a month, about 12 hours for a subscriber list and a broadcast. I already wrote that teardown. Start there if a small company just needs people who asked, then one email.

A public blog that also emails is Ghost Pro, $9–$35 a month, about 12 hours for posts and RSS. I already wrote the Ghost teardown. Kit’s 10-hour row is the letter. Ghost’s 12-hour row is the site. The Kit archive waits until day four.

A signup that should stay a line, not a list, is GetWaitlist, $15–$50 a month, about 3 hours. There is a waitlist guide if that is the job.

Styled sections and one send are Flodesk, $25–$54 a month, about 8 hours. That card is a template. This card is markdown you already write.

The first-project post still points at a tonight card if you have not shipped a small tool yet.

The 4-day row, after one real send

Use the list for one real letter, not as a demo. Then look at the second estimate: welcome sequence, tags, public archive, and stats.

The first mini-prompt is the welcome sequence. A subscriber enters only after confirm. Step 2 fires three days after step 1 was sent, not after signup. Unsubscribe between steps cancels the rest. A retry must not double-send a step.

The second mini-prompt is the dual render. The same frozen markdown becomes email-safe HTML and a public page with title, description, and a canonical URL. The RSS item points at that page. Later edits to the draft stay off the page readers were mailed.

Do not grow the archive into a membership site. The catalog says 4 days for that row. Skip paid recommendations and the visual builder.

The scope post is the same three-row table if you want the habit, not just this card. The prompt post is the extra line that says do not build the marketplace.

Host it, send one letter, cancel

This one wants Astro, D1, and Workers, because that is the stack on the card. There is a table for people, so take a backup before you delete the paid account.

Put the letter on a hostname you already own, letter.flaviocopes.com. Verify the sending domain. Import five consented addresses, including Ada. Send a test to yourself. Send the real issue. Click Ada’s unsubscribe. Queue a second send. Ada is gone from the audience and still on the table.

If you miss a welcome note or a public archive, add them from the 4-day row.

Then cancel Kit, or beehiiv, or Buttondown, whichever letter you pay for.

Start now

Go to Build your own Kit. Copy the Astro prompt, or TanStack Start if that is what you write.

Tell the agent the first estimate only: subscribers, markdown broadcasts. Ten hours.

Write one real issue this weekend. Send it from a list you own.

Keep reading

Read all articles →