The problem with modern software

Most productivity tools share an uncomfortable truth: they’re designed to keep you inside them. Every notification badge, every engagement nudge, every “streak” counter exists to serve the product’s metrics — not yours.

We think that’s backwards.

At Stardrop Labs, we believe the best software is software you forget you’re using. The tool disappears. The work remains.

What “invisible” actually means

Invisible design isn’t about minimalism for its own sake. It’s about removing every moment of friction between intention and action. Three principles guide us:

1. Reduce decisions, not options

Every choice a user has to make is a small tax on their attention. We don’t strip away features — we strip away the decisions around them.

Good design is as little design as possible. Less, but better — because it concentrates on the essential aspects, and the products are not burdened with non-essentials.

— Dieter Rams

2. Respect the user’s time

This means:

  • No loading states that could be avoided
  • No onboarding flows that teach what should be obvious
  • No confirmation dialogs for reversible actions

3. Earn attention, don’t steal it

We never interrupt. If something needs the user’s attention, we wait until they’re looking.

How this shows up in Flux

Flux is our first product, and every decision in it traces back to these ideas. Here’s a concrete example — the Daily Deck.

Instead of showing users their entire task list (overwhelming) or letting them pick tasks freely (decision fatigue), Flux deals a hand of cards each morning. The algorithm considers:

  1. Which goals have upcoming milestones
  2. What the user accomplished yesterday
  3. How much capacity they typically have on this day of the week

The result is a short, focused list that feels curated rather than assigned.

The card interaction

Each task is a card. You work through them one at a time:

StateWhat happensVisual cue
ActiveCard is front and centerFull opacity, slight glow
QueuedWaiting in the deckStacked, muted
DoneCompleted and filedSlides away with a soft fade
SkippedSet aside for tomorrowDrifts to the back of the deck

The interaction is deliberately tactile. Cards have weight. They move with purpose. There’s a satisfying physicality to completing your day — like closing a well-made book.


The technical side

For those curious about implementation, Flux is built with a few key constraints:

  • Local-first data — your tasks never leave your device unless you explicitly sync
  • No analytics SDK — we literally cannot track what you do
  • Sub-100ms interactions — every tap, swipe, and transition targets under 100 milliseconds

Here’s a simplified version of how the daily deck algorithm works:

function dealDailyDeck(goals: Goal[], history: DayLog[]): Card[] {
  const capacity = estimateCapacity(history);
  const priorities = rankByUrgency(goals);

  return priorities
    .flatMap(goal => goal.nextActions())
    .slice(0, capacity);
}

The real implementation is more nuanced — it accounts for energy levels, task variety, and momentum — but the core idea is simple: give people just enough to feel productive, never so much they feel overwhelmed.

What’s next

We’re working on a few things we’re excited about:

  • Weekly reflections — a calm, end-of-week summary that helps you see patterns
  • Goal templates — starting points for common goals like “read more” or “learn a language”
  • Shared milestones — lightweight collaboration without turning Flux into a project management tool

We’ll share more as these take shape. For now, we’re focused on getting the fundamentals right — because software that disappears has to work perfectly before it can disappear.


Thanks for reading. If this resonates, sign up for early access — we’d love to have you along for the journey.