Build in public, automatically

You built something
amazing today.
Let the world know.

ShipCard harvests your Claude Code sessions and git history, filters out anything sensitive, and generates a polished Twitter card in one command.

JS
Jake Sutherland
@jakeshipsit
Mar 17, 2026
Building in public: Day 43 🔥
12
Commits
+847
Lines
6.2h
Coding
3
Repos
Top Highlight
Shipped real-time collaboration with WebSockets — users can now co-edit dashboards live. Zero flicker on reconnect.
TypeScript WebSockets SvelteKit PostgreSQL Claude Code

You do great work.
Nobody knows about it.

Building in public is one of the most powerful ways to grow an audience — but most developers never do it. Here's why.

😮‍💨

You're too tired to write

After 8 hours of coding, the last thing you want to do is craft a Twitter thread about what you built. So you don't. And you forget.

🤷

"It's not interesting enough"

You downplay your own work. That auth refactor you did? That performance fix? Those are exactly the stories people want to read.

🔐

Fear of sharing too much

You don't want to accidentally expose API keys, client details, or internal paths. So you just don't post. ShipCard filters all of that automatically.

📊

No data to back it up

Vague posts like "worked on my project today" don't build audiences. Real numbers — commits, lines, hours — make people engage and follow.

Three steps.
One beautiful card.

ShipCard does all the work between when you finish coding and when you hit Post.

💻

Code All Day

Just work normally using Claude Code and git. ShipCard runs in the background, reading your session logs and commits as they happen.

Run shipcard collect

One command. ShipCard harvests your day's activity, strips secrets, ranks your top moments by impact, and writes structured JSON.

🎨

Get a 1200×675 PNG Card

A polished, Twitter-optimized card with your stats, top highlight, tech stack tags, and your handle. Ready to post in seconds.

🚀

Post & Grow

Drop the PNG into your tweet. Watch the engagement. Build in public consistently without it costing you any extra time or energy.

This is what your
timeline could look like.

One command. One card. Consistent build-in-public presence without writing a single word.

JS
Jake Sutherland
@jakeshipsit
𝕏
Day 43 of building in public 🚢

Shipped real-time collab today. Users can now co-edit dashboards simultaneously — zero flicker on reconnect.

#BuildInPublic #WebSockets #SvelteKit #IndieHacker
JS
Jake Sutherland
@jakeshipsit
Mar 17, 2026
Building in public: Day 43 🔥
12
Commits
+847
Lines
6.2h
Coding
3
Repos
Top Highlight
Real-time collaboration with WebSockets — co-edit dashboards live. Zero flicker on reconnect.
TypeScript WebSockets SvelteKit
147
89
1,204
Share
10:47 PM · Mar 17, 2026 · 48.2K Views

Shares your wins.
Keeps your secrets.

ShipCard's privacy filter runs before anything is rendered. Your API keys, internal paths, and client names stay off the card. Always.

  • API keys & tokens redacted

    Any string matching a secret pattern (JWT, Bearer tokens, keys) is stripped before analysis even begins.

  • Internal paths anonymized

    File paths containing company or client names are generalized. /acme-corp/billing becomes /[client]/billing.

  • Commit messages filtered

    Commits referencing ticket numbers, internal systems, or flagged keywords are excluded from the card entirely.

  • You control what's included

    A simple .shipcardignore file lets you exclude repos, branches, or file patterns.

  • Runs 100% locally

    No session data ever leaves your machine without your explicit opt-in. All processing happens locally.

privacy.py — what gets filtered
# Session prompt — raw (never leaves your machine)
"Set STRIPE_SECRET_KEY=sk_live_xK9mQ..."
"Fix bug in /acme-billing/invoices.py"
"See JIRA-4821 for context"

# After privacy filter (what ShipCard sees)
"Set STRIPE_SECRET_KEY=[REDACTED]"
"Fix bug in /[client]/invoices.py"
# ↑ internal ticket reference excluded

# .shipcardignore
repos:
  - client-work/*
  - internal-tools
branches:
  - staging/*
  - hotfix/*

Your card.
Your brand.

Tweak everything from your handle to the color scheme. Ship cards that look like they came from your design system.

🎨

Themes

Choose from Dark (default), Light, Ocean, Sunset, and Forest. Or define your own gradient in ~/.shipcard.toml.

🏷️

Your Handle

Set it once. Every card shows your name, avatar initial, and @handle exactly how you want it to appear on social.

📊

Stat Selection

Choose which stats matter most to you: commits, lines, hours, PRs merged, test coverage change, tools used.

💡

Highlight Rules

Tell ShipCard what counts as a highlight: "prefer commits mentioning 'shipped' or 'deployed'" — it'll rank those first.

🔗

Repo Filters

Only show certain repos. Focus your card on your side project, not your day-job commits. Full include/exclude control.

📐

Card Formats

1200×675 for Twitter/X. 1080×1080 for Instagram. 1200×627 for LinkedIn. One command generates all three.

End of day.
One command. Done.

No dashboards to open. No blog post to write. No time you don't have. Just run it.

zsh — ~/projects
~/projects shipcard collect
 
Collecting activity for 2026-03-17...
Scanning Claude Code sessions... 4 sessions found
Scanning git history... 12 commits across 3 repos
Running privacy filter... 3 items redacted
Ranking highlights... 7 highlights → top 1 selected
 
Rendering card...
Card saved: ~/Desktop/shipcard-2026-03-17.png
Also saved: shipcard-2026-03-17-square.png
 
Today's summary:
12 commits · +847 lines · 6.2h · Top: real-time collab shipped
 
Done. Go post it. 🚢
 
~/projects

Start free.
Ship more.

The core CLI is free forever. Upgrade when you're ready to go hands-free.

Indie
$0
Forever free
  • shipcard collect CLI
  • 1200×675 PNG card
  • Privacy filter
  • Dark theme
  • Runs fully locally
  • Auto-posting to X
  • Premium themes
  • All format sizes
  • Streak tracking
Join Waitlist

You already built
something today. Share it.

ShipCard tells the story. Sign up to get notified at launch.