Tweet
Quick UI design for @chiffre_io: admin panel for platform usage stats 👀📈

#buildinpublic
I've made 18k€ in 2022 so far, working 2½ days a week.

The only marketing I've done is #buildinpublic here on Twitter. This is how my clients find me, or via my #opensource work.

I wouldn't dream of scaling this any higher. Free time is too valuable. #indiehacking
Today's #uidesign:

Account recovery key prompt for @chiffre_io, based on an article I published a while back:

francoisbest.com/posts/2020/pas…

#buildinpublic
✨ Weekend project (it's been a while):

Add an image of your project's stack to its README.

Like badges, but for your dependencies.

#buildinpublic
📩 Upcoming @chiffre_io #buildinpublic newletter issue:

🚦 Adding a status page (featuring @alisalahio & @RozenMD)
🌊 Investigating streams for data fetching
🗣️ Speaking at @FISSIONcodes talks on Thursday

Signup here: chiffre.io
Indie hackers, for the MVP of a small SaaS, what would you use for data fetching ?

#buildinpublic
Weekend project preview: partitioning a circle into 32 sections of equal-ish areas to represent SHA256 hashes as avatars. Each section will have an 8 bit color in it.

cc @TheBuilderJR 😉 #buildinpublic
Enough for today on the privacy policy cards, off to bed 😴

#uidesign #buildinpublic

cc @twitter @stripe @getsentry @clever_cloud
Today's #uidesign: privacy policy card to explain how data flows to 3rd party services.

Who said privacy policies had to be ugly and full of legalese ? 🙃

#buildinpublic
Combining this with my custom toasts for @chakra_ui makes powerful error messages:

#uidesign #buildinpublic twitter.com/fortysevenfx/s…
TIL there is a standard for error responses in JSON/REST.

RFC-7807 describes the `application/problem+json` format:
tools.ietf.org/html/rfc7807
Today's #uidesign: a pricing component that uses @stripe product metadata to populate the feature list.

#buildinpublic
Today's #uidesign: avatar menu with @stripe customer portal for billing.

#buildinpublic
Implementing churn detection is harsh, but a great opportunity to talk to customers and make the product better.

For good figure, we can also detect un-churn to feel better 🥳

#buildinpublic
This explains a misconception I had with @stripe prices.

If you have multiple plans/tiers for your "product", you need a Stripe Product for each of them. Then, you can specify monthly & yearly prices.

Otherwise users can't upgrade from one plan to the next:

#buildinpublic
@florinpop1705 Better bookmarks for Twitter.

There's a lot of great, useful content here, and it gets lost in our bookmarks. I want multiple lists, I want public, shareable URLs, I want RSS feeds. So I'm building it. 🤷

I tweet updates as I #buildinpublic.
Tonight, no product screenshot, I took some time off #buildinpublic to push a little feature to @chakra_ui's menus ⚡️

The codebase is one of the cleanest I've had the chance to work on, the Chakra team is doing an incredible job 😍👏💙
Weekend feature: contact/feedback widget.

UI -> Next.js API route -> Slack webhook

#buildinpublic