Inspiration

Every day starts with the same budget:

$$ 24 \times 60 \times 60 = 86400 \text{ seconds} $$

By 8 a.m., 28,800 of them are already gone. Most of us still feel there's time for the thing that matters, until the day has quietly been spent on everything else.

We kept running into the same problem with long-term goals. The goal usually isn't unclear. It's just too big to start today. Most productivity tools respond by adding more: more lists, more schedules, more decisions. We wanted to build the opposite: one goal, one action for today, and a reason to come back tomorrow.

What it does

86400 keeps one goal in focus and turns it into something you can do today.

  • One goal at a time. You describe the goal that matters most, in your own words.
  • One action for today. Pace, the app's AI planner, takes your goal, your deadline, and how often you want to work, and turns them into a weekly direction and a single daily action sized to fit a real day.
  • A minimum that still counts. Every action comes with a "minimum complete" version, so a hard day slows you down instead of stopping you.
  • A plan you can adjust. Change your deadline or your weekly rhythm whenever life does. If today's action still feels too big, shrink it to the minimum that counts.
  • Progress you can see. Every completed action earns points and moves your companion's growth. Points buy room themes and accessories, so a month of small actions turns into something you can actually look at.

How we built it

86400 is a Flutter and Dart app with a single codebase for iOS and Android.

  • AI planning: Pace runs through a backend API powered by Claude Fable 5.1 from Anthropic. It returns structured output (weekly direction, daily action, time estimate, and minimum-complete standard) that the app renders directly. No API key ever lives on the device.
  • Offline-first state: All progress is stored locally as JSON. Focus sessions, daily settlement, streaks, journey progress, companion growth, and collections all derive from the same local state, so the app works without a connection.
  • Monetization: RevenueCat, via purchases_flutter, handles the paid unlocks: running a second goal alongside your first, and an iOS home screen widget. The free app deliberately holds you to one goal at a time, because that limit is the product. Paying doesn't unlock the core loop. It unlocks the exceptions to it.

Challenges we ran into

Replacing the goal form with a chat. Our first version was a single open text box, and testers froze. We rebuilt it as a short conversation, one question at a time, ending with how often they want to work and when the goal is due. Users write less on each screen now and tell us more.

One state behind many views. Streaks, journey progress, companion growth, and daily settlement all read from the same local state. If any one of them disagrees with the others, users notice immediately.

Our first native app. None of us had built a native mobile app before. We started in Swift and SwiftUI and moved to Flutter on September 15 so one codebase could ship on both platforms. Local persistence, in-app purchases, and cross-platform parity were all new to us.

Accomplishments that we're proud of

We built a complete loop from intention to feedback: enter one goal, get a plan, run a focus session, settle the day, and immediately see the effort reflected in your companion and journey.

We're also proud that the companion isn't decoration. It turns daily progress into something you can see and care about, while streaks, weekly reports, and collectibles make long-term effort easier to recognize.

What we learned

  • A blank text box looks like freedom and feels like a test. Asking one question at a time got us better goals than asking one big open question, and it asked less of the user to do it.
  • When a plan changes on its own, users stop trusting it. We gave people the dials instead: frequency, deadline, and the size of today's action. AI is most useful when it removes decisions, not when it makes them quietly.
  • Our first app taught us trade-offs, not syntax. The framework we preferred mattered far less than shipping the same experience on both platforms before the deadline.

Built With

Share this project:

Updates

Submission history