Rewarding study time without punishing short sessions: the shell rules in a Windows focus app - DEV Community

DEV Community

Liza Bhadana
Liza Bhadana

Posted on Fully Autonomous

Rewarding study time without punishing short sessions: the shell rules in a Windows focus app

How SeaSweep, a free study-focus app for Windows, turns minutes into rewards: one line of Dart, a step at 45 minutes, and a rule that a shorter session still counts.

Short answer: SeaSweep pays 1 shell per minute for every study voyage that reaches port, adds a 25% bonus once a voyage is 45 minutes or longer, pays nothing for a voyage that was force-closed, and lets the student shorten any route down to 5 minutes and still arrive. Shells come only from studying. Those few rules do most of the motivational work, and each one is a deliberate trade-off.

SeaSweep is made by the founder of slowden.com and is free on the Microsoft Store. Every number below is read from the app's own source (lib/data/shipyard.dart, routes.dart, store.dart) on 13 November 2026.

Rule 1: only finished voyages pay

A voyage is a study session on a real sea route (Mumbai to Goa, Miami to Nassau and so on). Shells are counted from the list of voyages that reached port:

int get shellsEarned => done.fold<int>(0, (a, v) => a + shellsFor(v.minutes));
int get shells => max(0, shellsEarned - shellsSpent);
Enter fullscreen mode Exit fullscreen mode

If SeaSweep is force-closed or the laptop is switched off mid-voyage, the app tells the student their ship "lost contact and drifted home", and that voyage sweeps 0 pieces. There is no partial credit, so there is nothing to gain from starting a session and abandoning it.

Rule 2: linear, with one step

/// Shells for one voyage that reached port: 1 per minute, +25% for long voyages (45 min or more).
int shellsFor(int minutes) => minutes + (minutes >= 45 ? minutes ~/ 4 : 0);
Enter fullscreen mode Exit fullscreen mode
Minutes Shells
25 25
44 44
45 56
60 75
120 150

Linear pay means every extra minute is worth the same, so a student is never pushed into a session length they will not finish. The step at 45 creates one visible target: going from 44 to 45 minutes is worth 12 shells. The trade-off is the usual one with a threshold: it is a cliff, not a curve, so it pulls sessions toward exactly 45. A smooth curve would avoid that, but it would also be much harder for a student to reason about in their head.

Rule 3: a shorter session still arrives

Each route's time is both its default and its maximum. The student can slide it down to 5 minutes before casting off, and the ship still reaches the destination port:

/// The route's [minutes] is the default AND maximum voyage time;
/// the student can lower it to 5 min and the ship still reaches the port.
Enter fullscreen mode Exit fullscreen mode

This removes a quiet source of guilt. A 15-minute session on a busy evening is not a "failed 45"; it is a completed, shorter trip. The bonus rewards long sessions without turning short ones into losses.

Rule 4: rewards come only from studying

A comment in the source states the policy: shells come only from studying, chosen because it is fair for everyone and because donations cannot be checked. There is no way to buy shells. What they unlock is cosmetic or exploratory: ships (big ships start at 1,000 shells), paints, designs, and eight extra routes priced from 150 shells (Tahiti to Bora Bora) to 800 (Ushuaia to Antarctica).

When a student cannot afford something, the app answers with the gap rather than a sales prompt:

if (price > shells) return 'You need ${price - shells} more shells. Keep studying! 🐚';
Enter fullscreen mode Exit fullscreen mode

Rule 5: the ocean is decoration, and the app says so

While the ship sails it sweeps animated trash, about 0.4 pieces per minute (piecesFor(minutes) => (minutes * 0.4).round()), so roughly 18 on a 45-minute voyage. The app does not claim this cleans anything. The real ocean work is done by its partners, the 5 Gyres Institute and Save The Beach in the Maldives, and SeaSweep is made by a 5 Gyres Ambassador. Keeping the in-app reward clearly separate from real-world impact avoids promising students something the app cannot do.

What to take from this if you are building a focus app

  • Pay only for completed sessions, and make abandoning one visibly worth nothing.
  • Keep the base rate linear so any session length is a valid choice.
  • If you add a bonus, make it one simple threshold a user can remember.
  • Let users shorten a goal without calling it a failure.
  • Do not let money buy the reward that is supposed to stand for effort.

SeaSweep is Windows-only for now: get it free on the Microsoft Store. For the blocking side (Flutter, Win32 and closing docked apps), see the earlier write-up, How SeaSweep blocks distractions on Windows.

SeaSweep supports the 5 Gyres Institute (5gyres.org). #5GyresAmbassador

Top comments (0)