StudyKlocka — Building a SaaS Pomodoro Productivity Platform from Zero
HOME - case studies - studyklocka pomodoro timer app
StudyKlocka — Building a SaaS Pomodoro Productivity Platform from Zero

Industry
EdTech & Productivity
Region
India, UK, United States
Project Type
SaaS Product Build
Timeline
10 Months
Team Size
4 Engineers
Platforms
Web (Vue.js) + iOS & Android (Flutter)
Client Overview
StudyKlocka (Swedish for Study Clock) is a TTPL-built SaaS product — designed, developed, and launched by TTPL as a commercial productivity platform targeting the global student and professional market. The product addresses a specific gap in the Pomodoro timer space: most timer apps stop at the countdown. They log raw minutes but tell users nothing meaningful about what they actually accomplished, which subjects they focused on, or how their productivity varies across an academic semester or work quarter.
The target audience is students managing multi-subject university workloads across a semester, and working professionals running time-sensitive projects or sprints — both of whom need more than a countdown timer. They need a structured system that connects every focused minute to a meaningful unit of work, tracks it over time, and surfaces insights that help them work better. StudyKlocka is that system — live at studyklocka.com, available as a web application and a Flutter mobile app on iOS and Android, serving users across India, the UK, and the United States.
Challenges & Problem Statement
Building StudyKlocka from zero as a commercial SaaS product meant solving both product design problems and technical challenges simultaneously — with no existing codebase or paying customer to validate against:
- Pomodoro alone is not a productivity system: The classic Pomodoro technique is a focus method, not an accountability system. Users who ran timer sessions had no way to track which subject they studied, compare performance across weeks, or understand where their time actually went. The product needed a layer of structure — Terms and Tasks — to make every session meaningful, without adding friction that would make users abandon the timer.
- Two different user mental models in one product: Students think in semesters, subjects, and modules. Professionals think in sprints, projects, and activities. The product had to serve both audiences fluently — surfacing the right terminology and task types for each — without building two separate products or splitting the codebase.
- Retrospective honesty — the forgetting problem: Real productivity tracking breaks down when users miss sessions. If the app can only log sessions that start in real time, any forgotten or interrupted session creates a gap in the record. The product needed a first-class mechanism for users to add sessions they ran without the app — keeping records accurate without penalising real-world behaviour.
- Multi-market monetisation from day one: Launching in India, the UK, and the US simultaneously meant pricing in three currencies — Indian rupees, British pounds, and US dollars — each independently configurable, with a freemium model, upgrade paths, and an admin-controlled plan activation system that could be managed without code changes.
- Mobile experience parity: A productivity tool that stops working when you switch apps or lock your phone is useless for mobile users. The Flutter mobile app needed a timer that ran reliably in the background — surviving screen locks, incoming calls, and OS memory management — while delivering audio cues at session boundaries.
Project Overview
TTPL designed, built, and launched StudyKlocka — a full-stack SaaS Pomodoro productivity platform available at studyklocka.com. The platform consists of a Vue.js 3 single-page web application backed by a Laravel REST API with MySQL, and a cross-platform Flutter mobile app (iOS and Android) — both consuming the same authenticated API surface.
The core data model — Terms (time periods), Tasks (subjects or projects), and TaskLogs (timed sessions) — gives every focused minute full context: which term it belongs to, which task it's attributed to, and whether it was logged in real time or added retrospectively as a forgotten entry. Analytics dashboards, PDF email reports, a freemium subscription system with India/UK/US pricing, and a full admin panel complete the platform.
Approach
TTPL approached StudyKlocka as a product engineering problem rather than a feature delivery problem — starting with the core data model and working outward to the user experience. The Term-Task-TaskLog hierarchy was the foundational design decision: getting this right meant analytics, reporting, and the timer session flow would all naturally compose. Getting it wrong would have required rebuilding from the data layer up.
The API-first architecture — a single Laravel REST API serving both the Vue.js SPA and the Flutter app — was a deliberate choice to avoid logic duplication. Every business rule (plan enforcement, overlap detection, role gating, timezone handling) lives once in the API layer. The web and mobile apps are pure consumers of this API, with no platform-specific business logic.
The background timer on mobile was treated as a platform constraint to engineer around, not a limitation to accept. flutter_foreground_task was selected specifically because it provides a true OS-level foreground service on both iOS and Android — not a workaround — and was integrated with wakelock management so the screen stays active during focus sessions without unnecessarily draining battery during breaks.
The freemium model was designed for admin-controlled flexibility from the start: plan amounts, currencies, and activation periods are all database-driven, so pricing adjustments and plan extensions for any user in any market can be made from the admin panel without code changes or redeployments.
Solution Delivered
Term & Task Architecture — Structured Session Context
Users create Terms — named time periods (a semester, a work quarter, a project sprint) with a start date, optional end date, and a term type appropriate to their user type (student or professional). One term can be marked as default so the timer pre-selects it on launch. Tasks are assigned to terms via TermTaskMappings — typed by task category, with distinct task type libraries for students (subject, module) and professionals (project, activity). When the timer runs, the user selects their active term and task; every completed session is logged against that specific TermTaskMapping. Every logged minute carries full context — which period, which subject or project, and which category — making multi-dimensional analytics queries both precise and semantically meaningful.
Pomodoro Timer — Web and Mobile with Background Execution
The Pomodoro timer is implemented independently on web (Vue.js component) and mobile (Flutter), both consuming the same TaskLog API. On mobile, flutter_foreground_task runs a persistent foreground service that keeps the timer counting accurately regardless of screen state — surviving app minimisation, incoming calls, and OS memory management. Wakelock is activated during focus sessions to keep the screen on for users who watch the timer, and released during breaks to preserve battery. Audio cues at session boundaries are delivered by audioplayers with volume managed through volume_controller. go_router handles navigation so the timer state is preserved across screen transitions.
TaskLog Engine — Overlap Detection and Forgotten Entries
Every completed Pomodoro session creates a TaskLog record capturing start time, end time, duration in seconds, timer type (focus, short break, long break), and an is_forgotten_entry flag. Before any log is committed, the API runs a duplicate detection query covering all three overlap geometries — new entry starting inside an existing log, ending inside one, or fully enclosing one — in a single efficient query. This prevents session collisions without false positives for adjacent entries. The forgotten entry feature lets users add retrospective sessions with custom start/end times, keeping their records accurate even when they studied without opening the app.
Analytics Dashboard — Three Levels of Granularity
The dashboard presents session data at three levels. At the term level, aggregate totals show focus time, short break time, and long break time per term — letting users compare output across semesters or sprints. At the task level, a breakdown shows time allocated per task within the selected term, ordered by total minutes. At the daily level, a 30-day chart shows time per task per day — visualising study consistency and workload distribution over the past month. All three views are driven by dedicated API endpoints (dashboard/terms, dashboard/term_data, dashboard/task_data, dashboard/daily_data) that return pre-aggregated data, keeping the frontend lean and the charts responsive.
PDF Report Generation and Secure Email Delivery
Users can request a session report for any custom date range from the Reports screen. The API aggregates all TaskLog records in the date range, formats them in IST timezone grouped by date, and includes term name, task name, session type, start time, end time, and duration per row. Reports are generated server-side using DomPDF, delivered to any specified email address via PHPMailer, and deleted from server storage immediately after sending — ensuring no user session data is retained at rest. A single API call (task_log/send_report) handles the full generate-send-delete pipeline.
Freemium Subscription with Multi-Currency Pricing and Admin Controls
Plans are defined with three independent currency amounts — Indian rupees, British pounds, and US dollars — covering India, UK, and US markets from a single plan record. PlanMappings track each user's active plan with active_from, active_upto, and extension status independently from the plan definition. The upgrade flow detects the current active plan, processes the purchase, records an order, and transitions plan status through payment approval or failure states. Admins can assign plans, toggle activations, extend active periods, and manage plan definitions from the admin panel without code changes. A check.plan middleware enforces plan access on every protected API route, returning a clear response if the user's plan has lapsed or was never assigned.
Admin Panel and Platform Management
A role-protected admin panel (check.role:admin|super_admin) gives platform administrators complete operational control. Admins view all registered users, reset passwords, toggle account activation, assign subscription plans, extend plan periods, and toggle plan activation per user. Contact form submissions are manageable — admins can mark messages as read, add internal remarks, and bulk-delete resolved messages. A system stats endpoint surfaces platform-wide metrics. Plan management is fully self-service: create plans, toggle active status, and manage plan types without any deployment. All admin routes share the same authenticated Laravel API, with role middleware enforcing access at the route level.
Result
StudyKlocka is live at studyklocka.com — a fully functional SaaS productivity platform serving students and professionals across India, the UK, and the United States. The Term-Task-TaskLog architecture gives users a structured, data-rich alternative to raw Pomodoro timers, with analytics dashboards and email reports that show exactly where their focused time goes over a semester or sprint.
The Flutter mobile app delivers a reliable background timer experience on both iOS and Android — a core expectation for a productivity tool that users run during real study and work sessions. The freemium subscription system, multi-currency pricing, and admin-controlled plan management give TTPL full operational flexibility to serve users across markets without code deployments. The platform is production-ready, continuously maintained, and demonstrates TTPL's capability to conceive, architect, and ship a complete SaaS product end-to-end.
Client Benefits
Structured Productivity — Not Just a Timer
The Term and Task system gives users a complete productivity framework — every session is attributed to a meaningful subject or project, and every term builds a permanent, searchable record of where their time went.
Reliable Background Timer on Mobile
The Flutter app keeps the Pomodoro timer running accurately through app switches, screen locks, and incoming calls — delivering the consistent mobile experience users expect from a daily-use productivity tool.
Honest Session Records with Forgotten Entry
Users can add retrospective sessions they ran without the app — keeping their productivity record complete and accurate without requiring the app to be open for every minute of study.
Visual Analytics Across Terms and Tasks
Three-level analytics — term totals, per-task breakdown, and 30-day daily charts — give users genuine insight into their study habits, not just raw timer totals.
PDF Reports Delivered by Email
Custom date-range session reports are generated and emailed on demand, giving users a portable record of their productivity for any period — useful for academic submissions, performance reviews, or personal reflection.
Multi-Market SaaS with Flexible Subscription Management
Independent INR, GBP, and USD pricing with admin-controlled plan activation and extension gives TTPL full flexibility to serve and manage users across India, the UK, and the US from a single platform.
Client Feedback
"I've tried a lot of Pomodoro apps but StudyKlocka is the first one that actually tracks what I study, not just how long I study. Seeing my time broken down by subject at the end of the semester is genuinely useful. The mobile app works in the background which was a dealbreaker with other apps I tried."
- Priya Nair, Postgraduate Student, University of Edinburgh
Technologies Used


