InspirationTraditional Pomodoro timers have a fundamental flaw: there are no consequences for giving up. If you start a 25-minute timer and quit after 5 minutes because you want to scroll social media, the app simply resets. There is no friction, no accountability, and no insight into why you failed.I wanted to build a productivity ecosystem that introduces real stakes to focus sessions, analyzes user behavior to find their peak performance windows, and directly ties advanced insights to a premium monetization model. Zendoro was born out of the idea that focus is a muscle, and building it requires asymmetric risk and reward.What it doesZendoro is a premium focus and habit-tracking application built around four core pillars:The Focus Score Engine: A deterministic mathematical model that grades every session based on completion status, duration, and pause leniency.Zen Garden (Gamification): A living virtual garden that thrives when you complete sessions (+10 health) but aggressively withers if you abandon them (-40 health). This creates a heavy psychological deterrent against quitting.Focus DNA (Analytics): An on-device analytics engine that processes historical SQLite data to determine the user's "Prime Time" (Morning, Afternoon, or Night), completion rate, and average scores.Premium AI Coach: A rule-based insight generator that reads the user's Focus DNA to provide tailored, actionable advice. To demonstrate a strong monetization strategy for the hackathon, this feature is locked behind a premium paywall using a beautifully frosted "glassmorphism" UI.How I built itZendoro is built with Flutter to ensure a fluid, native-feeling experience across platforms.Architecture & Persistence: I implemented a robust LocalFocusRepository using SQLite (sqflite). This allows for complex date-range queries necessary for the Focus DNA engine and streak calculations.The Focus Score Math: The core scoring metric is calculated using a dynamic formula to ensure fairness regardless of session length. I utilized the following logic for the scoring engine:$$S = \max \left(0, \left[ \min\left(100, \frac{T_{active}}{T_{planned}} \times 100\right) - P_{penalty} \right] \times C_{multiplier} \right)$$Where $P_{penalty}$ is applied only after a user exceeds a lenient threshold of 2 pauses or 5 minutes of pause time. The critical component is the $C_{multiplier}$: a completed session uses a 1.0 multiplier, an externally interrupted session uses 0.75, and a manually abandoned session drops the score with a brutal 0.30 multiplier.Monetization UX: I focused heavily on the conversion funnel. Instead of a hard block, the AI Coach insights are rendered as a skeleton layout overlaid with a BackdropFilter (sigma 15 blur). Upon a successful premium unlock, a local state flag instantly removes the blur without requiring an app restart or network fetch, providing immediate gratification.Challenges I ran intoTimezone & Midnight Boundaries: Calculating daily streaks accurately required normalizing session timestamps. If a user starts a session at 11:55 PM and finishes at 12:15 AM, the app needs to correctly attribute the effort to the local day without breaking the streak. I solved this by converting all history to .toLocal() and stripping out hours/minutes before grouping by DateTime(year, month, day).Paywall State Management: Ensuring the UI reacts instantly to a purchase. When the user returns from the PaywallScreen, the dna_dashboard_screen triggers a targeted UI rebuild to melt away the frosted glass overlay seamlessly.Accomplishments that I'm proud ofI am incredibly proud of the asymmetric gamification logic. By rewarding completion with +10 health but punishing abandonment with -40 health, Zendoro actively shapes user behavior. The UI reflects this with premium, polished widgets, color-coded completion rates, and an inviting, modern aesthetic that justifies a premium subscription.What I learnedI learned that monetization should never feel like a punishment; it should feel like an upgrade. By giving users access to the core timer, the Zen Garden, and their basic Focus DNA for free, they build a habit and invest data into the app. The paywall is placed contextually exactly where their curiosity peaks—right before the AI explains their own data to them.What's next for ZendoroThe current rule-based AI Coach is highly effective, but the next step is routing the anonymized Focus DNA JSON into a true LLM (like Gemini or Claude) to provide deeply nuanced, conversational productivity coaching. Additionally, I plan to integrate RevenueCat Funnels to track web-to-app conversions and introduce social leaderboards where users can compare their weekly Focus Scores with friends.

Built With

Share this project:

Updates

Submission history