AppCrib

Clean, Modern, Private: Three Words We're Not Kidding About

Domain knowledge·Published by AppCrib·

Every company claims their product is modern. Every company claims to respect your privacy. Every company claims to be clean and focused. The words have been hollowed out by overuse.

We're using them anyway, because the alternative is finding new words for things we actually believe. So here's what we mean when we say Infinite Orchard builds clean, modern, private apps. And what it costs us to mean it.

Clean means we refuse to add things

The temptation in software is additive. Every feature request sounds reasonable on its own. Every integration sounds useful. Every banner, modal, toast, tooltip, and onboarding flow has some PM somewhere who will tell you it lifted a metric by 0.4 percent in an A/B test. Stack enough of those decisions on top of each other and you end up with the modern internet, where half the screen on any given page is chrome.

We have an explicit rule that goes the other way. The default is *not* to add. A tool page on AppCrib shows the tool. A full-depth app does the job it signed up to do. The first time we catch ourselves arguing for a feature because "users expect it" or "every other product has one," that's the moment we know we need to push back harder.

This is harder to maintain than it sounds. We've already had internal arguments about whether to add a newsletter signup to tool pages, whether to add "try our other tools" modals, whether to put a referral banner on the homepage. The answer has been no to all of them so far. Some of these are probably good ideas. We're going to keep the bar high and add them slowly, if at all, rather than let the product drift into the shape of every other SaaS site on the internet.

Modern means the stack is locked and the patterns are shared

This one is closer to a technical claim than a marketing one.

Modern doesn't mean "uses whatever the latest framework is this quarter." It means we picked a stack deliberately, we standardized on it across every app, and we're not going to re-litigate that decision every time we start something new. React and Next.js for the frontend. Tailwind and shadcn for styling. Convex for the backend and data. Keycloak for auth. Cloudflare for edge and DNS. Stripe for payments. Resend for transactional email. Axiom and Sentry for observability.

Locking the stack sounds boring, and it is. But every time we're tempted to deviate (think "this one app really wants a graph database" or "what if this one was in Svelte"), we remind ourselves that the whole point of the portfolio is that each new app starts closer to shipping than the last one. Divergence is a tax on future-us. We pay it only when the app genuinely demands it.

This also means our apps look and feel like they belong in the same decade as the user's operating system. No sans-serif 14-point Arial on a white background. No "submit" buttons that look like they were lifted from a 2008 phpBB forum. Modern as a visual claim means design tokens, consistent spacing, legible typography, dark mode that isn't an afterthought. Modern as an engineering claim means type safety, serverless defaults, edge deployment, observability from day one. Both are table stakes in 2026, and we treat them that way.

Private means we actively don't collect things we don't need

This is the one the most companies lie about, and the one we care about the most.

For our utility tools, the default is aggressive privacy. No account required. No tracking pixels from a dozen ad networks. No fingerprinting. No session recording. No data sent to a server unless the tool fundamentally requires it. A JSON formatter doesn't need to send your JSON to a server. A timestamp converter doesn't need to know who you are. We built the tools to respect that.

We do use analytics. We have GA4 installed, which we're honest about. And we do serve ads through Google AdSense, which is the least-bad of the viable options at our current traffic. But we made a set of choices about what the *baseline* looks like, and we keep pulling toward it:

  • No signup walls. Tools work on first visit. Always.
  • No data harvesting. We don't want your email. We're not building a list to sell to you.
  • No session replay or fingerprinting. GA4 is the extent of our visibility into you, and we don't enrich it with third-party identifiers.
  • No dark patterns around consent. If we need consent for something, we ask for it like a human.

For apps where accounts are part of the product, we use Keycloak for auth and we're deliberate about what personal data the app actually needs to function. We're also a two-person company, which means we don't have the option of being cavalier about compliance. A data breach would sink us. That aligns our incentives nicely with our users'.

What it costs to do it this way

Every one of these commitments has a real cost.

Clean costs us retention mechanics. Every growth-hacker toolkit we've ignored is a lever we've chosen not to pull. Our product people in a past life would lose their minds. We're betting that people come back to tools that work and don't annoy them, which is an article of faith until we have enough data to prove it.

Modern costs us velocity. Locking the stack means that when one of our apps would genuinely be easier in a different tool, we eat the cost of doing it in the standard stack anyway. We think the compound benefit (every new project reusing the same primitives, every decision we don't have to make twice) outweighs the per-project inefficiency. But we pay for it, every week.

Private costs us money. Every company we've ruled out partnering with because their ad network has a reputation for malware is money left on the table. Every piece of user data we've chosen not to collect is a segment we can't target. We could make more revenue in the short term by being less careful. We don't want the short-term revenue if it comes with the long-term reputation.

Why bother?

Because we think the market for "another SaaS that wants my email to show me a simple utility" is saturated, and the market for "a company that builds software the way software was supposed to be built" is not. Because we're two people who personally use dozens of tools a week and we've been quietly angry about the state of the category for years. Because we can afford to be principled (nobody has us on a quarterly roadmap, and we own the company), and most people can't.

We don't think what we're doing is heroic. We think it's table stakes, and the rest of the industry is underperforming. That might sound arrogant, but the bar isn't high. Build things that work. Don't extract more than you need. Make your product feel like it belongs in the current decade. Tell the truth in your marketing. That's most of it.

The rest is just doing the work, every week, and refusing to cut corners in the places that would make the product worse for the person using it. We'll keep writing these as we go.

See you in the next one.

AppCrib
Free tools for developers, designers, and everyone else.
Browse all tools