17 products. 1 developer. 0 funding.
I spent the last year building micro-SaaS tools that solve problems I kept running into. Some make money, most are experiments. All shipped solo.
old me: 'users will export to anki and be happy.' today me: realized med students don't want to leave klarrity to manage decks—they want cards streamed straight into obsidian while they're still reading. shipping that now.
#buildinpublic
old me: build expiro for everyone, launch in the us first. today me: shipping in saudi arabia and uae where people actually buy it, zero marketing spend. turns out passport holders in high-travel regions don't need convincing that expiry reminders matter. #buildinpublic
stolen from designers > learned from design blogs. the best frontend education is watching someone else's taste in motion, embedded in 200 lines of production CSS.
#startuplife#shipping
if you're building a tool that extracts design tokens from competitors, this is the gap: showing the raw values is only half useful. showing *intent* — the pattern across 20 interactions — is where insight lives.
next time you're inspecting a site you admire, don't just copy the color hex. ask: what's the smallest change that made this feel intentional? often it's not a feature. it's a shadow. a transition. a line-height.
this is why reverse-engineering live sites matters. chrome devtools shows you the final CSS, but you miss the *intent*. why did they pick that easing curve? why that shadow blur, not that one?
why it works: your eye reads depth, not movement. the shadow growing makes the card feel like it's lifting. way more elegant than sliding 4px up or fading in.
the designer said she stole it from reading stripe's checkout flow. one tiny detail across 50 interactions. you'd never consciously notice it. you'd just feel the interface was premium.
most devs animate opacity or transform. safe. predictable. boring. what she did: animate the shadow. specifically the blur radius. card stays still, but the shadow expands outward on hover.
i watched a designer animate a card hover and realized i'd been doing it wrong for years. four lines of css, and suddenly every interaction felt alive instead of clunky. the trick? she wasn't animating the thing you thought.
what's a feature you built that works fine but you know is held together by string and fear? mine: the pdf export in my invoicing app triggers on a webhook from a third-party service i don't fully control. if that service hiccups, invoices just vanish from the queue.
#shipping#indiehackers
everyone says "talk to your users" but i notice builders who actually do it describe the conversations differently. they mention specific objections, weird workarounds people invented, or a question that made them realize their mental model was wrong. vs people who say "users love it" with zero texture. which one actually talked to someone?
#shipping#solofounder
med student highlighting a pdf, copying the text, pasting into chatgpt, waiting for the response, copying it back into notion. klarrity just does that in one click.
#buildinpublic
you're at the airport. passport in hand. boarding pass printed. gate agent scans it and hands it back with that look. expired. two hours ago. you didn't know. expiro catches that before you leave home. visionkit reads the date. you get a tap 30 days out. built one for domains and ssl certs too. #buildinpublic
old me: built a thing, shipped it, assumed people would figure it out. today me: watched someone click the settings button looking for docs, realized the product isn't real until someone else can use it without asking me questions.
#buildinpublic#buildinginpublic
most solo devs i know ship their first product with way too many settings. then they watch people just... not touch them. the second product has 3 toggles max. the third product has none. constraint is the real feature.
#buildinpublic#solofounder
the graveyard move: killing a feature because it's bloated vs killing a product because it never had a real problem to solve. first one is a pivot. second one is learning. most solo devs confuse them and ship dashboards for features nobody needed in the first place.
#buildinpublic#startuplife
you're highlighting a cell diagram in your lecture pdf. you hit the klarrity button. two seconds later: flashcard with the diagram on front, labeled structures on back. you didn't write anything. you didn't open anki. you just kept studying.
#buildinpublic
a passport expiry is a boarding-gate emergency. a domain expiry is a slow bleed you notice 6 months later when dns breaks. expiro treats both the same way — visionkit scans the date, you get notified at 30/7/1 days. one's anxiety, one's laziness. both need the same tool. #buildinpublic