ONESTEP

Daily micro-quests to get me out of the house

ONESTEP issues one small quest per day — work from a cafe, take a walk, meet someone — on the premise from Atomic Habits that a 1% daily change compounds. The constraint is the product: one task, one day, no backlog to manage and nothing to plan.

Live site

Problem

A quest is selected each morning by scoring the pool against three live signals:

- City type — inferred from the user's IP: urban, coastal, mountain, college town, small town or desert - Weather — current conditions at those coordinates - Time — hour of the day, and weekday versus weekend

Anything completed in the last thirty days is excluded, and the final pick is a weighted random draw from the ten highest-scoring candidates rather than the single best match, so identical conditions do not produce identical quests.

Completing a quest advances a streak, and streaks award badges at 7, 14, 30, 90, 180 and 365 consecutive days.

Solution

The interface is time-gated. From 6AM until 3PM it shows the quest and nothing else — no dashboard, no statistics, no history — so the only available action is to do the task. At 3PM the full dashboard unlocks for marking it complete and reviewing progress.

Quests are written in advance and managed through an admin panel with full CRUD and bulk import rather than generated at runtime. The algorithm only handles selection.

Outcome

The loop shipped complete — onboarding, quest selection, the admin CMS, streaks, badges, payments and the time-gated UI. Sustained use did not follow, my own included, which is the more useful result: habit apps do not fail on mechanics, they fail on fit. Opening the app has to be easier than ignoring it, and no amount of streak design substitutes for that.

Features

  • Daily quest engine
  • Personal onboarding questions
  • Time-based UI (quest mode vs dashboard)
  • Streaks and achievements
  • Admin CMS for quest management
  • Location-based quest timing

Lessons

  • Built something to solve my own problem, didn't stick with using it myself. That says something.
  • The time-based UI was a good idea -- showing less to encourage action instead of browsing.
  • Sometimes a project teaches you more about yourself than about code.

Stack

  • Frontend: React
  • Backend: Node.js, Express
  • Database: MongoDB