Raw
FreeDeterministic template. Your bullets, slotted into a fixed format.
🔥 Day 73/100 - Shipped Stripe webhook plan flip. - Pricing toggle (mo/yr) live. - Share button uses navigator.share. 73 days shipped.
ShipStreak turns 1 to 3 raw notes into a clean daily update and a public streak anyone can open. No scheduler. No feed to scroll. No algorithm games. Just a steady, visible record of what you did.
Today's post
Sam, indie maker
@sam · Apr 30
Day 23/30 building in public
Today:
- Shipped Stripe webhook plan flip end to end.
- Wrote real Pricing toggle (monthly + yearly) with the discount math live.
- Profile share button now uses navigator.share, with a clean clipboard fallback.
- Lighthouse pass: a11y 98, perf 96, no console warnings.
#buildinpublic #shipstreak
Public streak
Public trail
Day 23 / 30Streak
22d
Shipped
21
Skipped
1
Consistency dies in micro-decisions: what to share, what tone to use, whether today is "post-worthy". We compress that loop into a closed surface so it stops costing you an hour.
Open X / LinkedIn to post
Hit the feed. Read 3 things. Lose 8 minutes.
Stare at the empty box
Phrase, re-phrase, delete. Maybe tomorrow.
Post nothing today
Streak breaks. Public consistency erodes quietly.
Open ShipStreak
No timeline. No notifications. Just today's box.
Drop 1 to 3 bullets
What you actually shipped. 240 chars each. Done in 20s.
Generate, copy, paste
Clean update on the clipboard. Streak counter ticks +1.
The same loop every day. No new flows to learn, no editor to tame, no dashboard to babysit.
Type what you actually shipped today. 240 characters each, no formatting tax, no thread builder.
Raw template if you want certainty. Clean or hype if you want polished wording while the structure stays locked.
Falls back to the raw template if the polishing provider is down. You always get a copyable post.
ShipStreak never auto-posts. Your update lands on the clipboard; you paste it where you already publish (X, LinkedIn, Mastodon, your blog).
Streak counter ticks +1. Your public profile gets a new completion dot. You stay portable, no OAuth, no fragile push integrations.
You always own the input. Tones rephrase wording without inventing facts or padding the post. If the polishing provider is unavailable, we fall back to Raw so you still ship.
Today's bullets
Deterministic template. Your bullets, slotted into a fixed format.
🔥 Day 73/100 - Shipped Stripe webhook plan flip. - Pricing toggle (mo/yr) live. - Share button uses navigator.share. 73 days shipped.
Polished wording, structure preserved. Sounds like you, sharper.
Day 73/100 - Stripe webhook now flips plans end to end. - Pricing toggle ships with monthly + yearly. - Share button uses the native navigator.share API. 73 days of public shipping.
Punchy, high-energy phrasing. Same facts, more momentum.
Day 73/100. Three real wins: - Stripe webhook flips plans live, no manual ops. - Pricing toggle is in. Mo + yr, instant switch. - Share button now native, one tap to send. 73 days. Still shipping.
Sample post. ShipStreak never invents activity. Bullets above are shown verbatim.
Four capabilities. Every one of them maps to something you actually use every day. No padding, no roadmap-as-feature.
Capture, generate, copy. The whole flow lives in one screen. No editor, no scheduler, no thread builder.
Bullets in, post on clipboard out
Entries are immutable once shipped. Pause without breaking your streak; the calendar reflects what actually happened.
1 active streak free · up to 3 on Pro
Your username, completion calendar, and streak state at /u/you. Shareable consistency, not gameable likes.
Vanity URL · custom domain on Pro
ShipStreak never auto-posts. You paste where you already publish (X, LinkedIn, Mastodon, your blog). No OAuth to babysit.
No engagement loop in the product
Every shipped day becomes a dot on your public calendar at /u/you. No bullets. No post text. Just a clean record of what you did and when. Skip a day and the gap shows. That is the point.
@sam
streak.sam.dev
Day
73
Shipped
68
Skipped
5
ShipStreak fits the people who already ship every day and want a public record of it, without becoming feed-natives.
Drop 2 bullets at the end of a session, paste into X. No timeline, no doomscroll between shipping and posting.
1 active streak free, 3 on Pro
Entries are immutable. Pauses are explicit. Your public timeline reflects real execution, not a curated highlight reel.
Up to 180-day durations on Pro
Three bullets a day, copy to a public page your advisor can check. Optional custom domain hides the SaaS plumbing.
Custom domain, Pro only
The completion calendar is the artifact. Skipping a day feels real because the public page renders it as a gap.
Public profile at /u/you
Cancel anytime. Yearly saves you two months.
Free
Start your first 7-day streak. No card needed.
Free
No card required.
Pro
Multiple streaks, custom durations, AI tones, custom domain.
€60
€39
EUR
/year
Yearly billing. Cancel anytime.
streak.yourdomain.com) from /dashboard/account, point a CNAME at our hosting target, and your public profile serves there instead of the default subdomain. DNS verification is rolling out: until it ships, your profile keeps working at the default URL while the custom domain is wired up.Have more questions? Get in touch with our team
One bullet today is better than a perfect thread you never post. Start the loop free. Upgrade only when consistency becomes identity.
No card required · ~30s to your first post · cancel anytime on Pro