💡 Executive Summary
After leaving So Simple Pomodoro v1.0 untouched on the stores for a year, we rebuilt the entire codebase from the ground up into v2.0: a cross-platform 'Lo-Fi Focus Studio & Focus-to-Earn' ecosystem spanning Android, iOS, Apple Watch (watchOS), and Galaxy Watch (Wear OS). In Part 1, we diagnose why generic timer utilities fail to retain users and explain how we combined an atmospheric dark studio workspace with a behavioral-economics lottery loop (up to 3 focus tickets per day).
Rebuilding an Abandoned Pomodoro App: Lo-Fi Focus Studio & Focus-to-Earn Architecture
▲ Diagnosing the structural limits of v1.0 and designing the two pillars of v2.0: Lo-Fi Focus Studio UI and Focus-to-Earn behavioral economics

1. Prologue: Reopening a Year-Old Pomodoro App

Almost every developer has started a side project thinking, "Let's build a clean, minimal utility app and ship it to the App Store and Play Store." For me, that project was So Simple Pomodoro. I shipped v1.0 with mobile and smartwatch targets, but if I am honest, the app sat neglected for nearly a year without a single meaningful update.

When I finally booted up the project and opened v1.0 on my phone and watch—evaluating it not as its creator, but as a critical everyday user—the flaws were undeniable:

  • Blinding Glare & Zero Emotional Appeal: A stark white background (#FFFFFF) with a plain 25:00 label and two buttons. On a dim desk late at night, it strained the eyes and offered zero ambiance.
  • Broken Background Reliability: Locking the phone screen allowed OS battery savers to throttle or suspend the countdown, causing alarms to fire late or not at all.
  • No Retention Loop: Completing a 25-minute session yielded nothing. There was no compelling answer to the question: "Why should anyone open this app every day instead of the built-in OS clock app?"
🎯 The Core Thesis of the v2.0 Rebuild
"Stop building a mere digital stopwatch. Build an atmospheric workspace (Lo-Fi Focus Studio) users want to keep open on their desk, paired with a behavioral reward loop (Focus-to-Earn) that motivates them to complete three real focus sessions every day."

2. Pillar 1: The 'Lo-Fi Focus Studio' Dark UI/UX Architecture

Millions of developers, students, and creators tune into 'Lofi Hip Hop Radio - Beats to Relax/Study to' while working. Why? Because the cozy ambiance of a late-night desk lamp, rain tapping against the window, and warm analog equipment reduces cognitive friction and eases the brain into deep flow.

We threw out the blinding white interface of v1.0 and engineered a cohesive design system around a "Lo-Fi Focus Studio" identity:

Design Token HEX Code Visual & Psychological Role
Background Surface #121318 / #1C1E26 Deep charcoal studio backdrop that eliminates night glare and saves battery on OLED displays
Focus Accent #F59E0B (Warm Amber) Evokes the warm glow of an analog vacuum-tube studio lamp during active focus sessions
Break Accent #10B981 (Soft Emerald) Shifts immediately to a calm emerald green during breaks to signal visual and mental decompression
Typography Tabular Figures Monospaced numeral metrics prevent horizontal layout jitter as seconds tick down

Instead of cramming every feature onto a single screen, we organized the experience into a clean 4-Tab Spatial Architecture:

flowchart LR subgraph App["So Simple Pomodoro v2.0 — 4-Tab Studio Architecture"] T1["🎧 Tab 1: Studio\nCircular Ring Gauge · ON AIR Lamp\n15–60m Quick Config · Daily Ticket Badge"] T2["🎚️ Tab 2: Sound Mixer\n5 Google Field-Recorded Channels\nIndependent Volume Sliders · Presets"] T3["🎟️ Tab 3: Reward Lounge\nWeekly Lucky Draw Countdown\nFocus & Ad Ticket Wallet · Winners"] T4["📊 Tab 4: Analytics\nLast 7 Days Focus Bar Chart\nCumulative Minutes & Sessions"] end T1 <--> T2 T2 <--> T3 T3 <--> T4

Production Flutter Theme Implementation

In lib/main.dart, our custom studio color tokens are bound to a Material 3 dark color scheme with tabular numeral rendering:

// lib/main.dart — Lo-Fi Focus Studio theme tokens
class StudioColors {
  static const Color bgDeep = Color(0xFF121318);
  static const Color cardSurface = Color(0xFF1C1E26);
  static const Color cardElevated = Color(0xFF252834);
  static const Color focusAmber = Color(0xFFF59E0B);
  static const Color breakEmerald = Color(0xFF10B981);
  static const Color textPrimary = Color(0xFFF3F4F6);
  static const Color textSecondary = Color(0xFF9CA3AF);
}

ThemeData buildStudioTheme() {
  return ThemeData(
    useMaterial3: true,
    brightness: Brightness.dark,
    scaffoldBackgroundColor: StudioColors.bgDeep,
    colorScheme: const ColorScheme.dark(
      surface: StudioColors.cardSurface,
      primary: StudioColors.focusAmber,
      secondary: StudioColors.breakEmerald,
    ),
    fontFamily: 'Pretendard',
  );
}

3. Pillar 2: 'Focus-to-Earn' & Behavioral Economics

Even the most polished dark UI won't bring users back on Day 30 without a compelling reward loop. During product discovery, we asked: "How can an indie developer fund ongoing rewards sustainably through ad revenue while giving users a genuinely exciting incentive to focus?"

Why a 'Weekly Lucky Draw' Beats Fixed Micro-Points

Many pedometer or reward apps hand out fractions of a cent per action. For an indie developer, fixed cash liabilities across a growing user base quickly become unsustainable; for users, earning $0.002 after 25 minutes of hard study feels trivial and demotivating.

According to Prospect Theory in behavioral economics, people experience significantly higher anticipation and engagement from a chance at a meaningful weekly prize (such as coffee gift cards or store vouchers) than from tiny guaranteed micro-payouts. That insight led directly to our Weekly Focus Lottery mechanics:

Policy Parameter Configured Value Behavioral & Systems Engineering Rationale
Minimum Focus Duration >= 20 minutes Prevents 1-minute timer farming and enforces a genuine deep-work threshold
Daily Focus Ticket Cap Max 3 tickets / day 25m × 3 sessions = 75 minutes of daily deep focus. Stops bot farming and prevents burnout
Unique Ticket Issuance #A7F92C (6-char Hex) Pops up a tactile gold ticket modal with a unique serial code immediately upon session completion
Weekly Draw Cycle Every Sunday 23:59 Resets the pool weekly so every Monday starts on a level playing field

The Power of the "3-Session Daily Routine"

Capping focus-earned tickets at 3 per day solved two problems simultaneously. Unlimited tickets would have invited 24/7 emulator farms to monopolize the draw pool. By capping focus tickets at 3 per day, ordinary students and developers get an achievable, satisfying daily quest: "Complete 3 focus sessions today (75 minutes) to max out my daily lottery tickets!"

4. Up Next: Monetization & the 4-Layer Anti-Abuse Architecture

Introducing real-world rewards immediately raised two critical engineering challenges:

  1. "How do we integrate AdMob monetization without ruining a user's deep focus with annoying pop-up ads?"
  2. "How do we stop malicious users from fast-forwarding the clock or forging HTTP requests to mint unlimited lottery tickets?"

In [Part 2: Balancing Monetization and Fairness — Rewarded Ads & a 4-Layer Anti-Abuse Architecture], we walk through our zero-interruption opt-in ad model and the 4-layer defense pipeline spanning Dart wall-clock verification to Supabase PostgreSQL SECURITY DEFINER RPCs.