Skip to content
Andi Muhammad Aqil
All projects
Final Year Project

FocusPro

A productivity and time-management web app for students, freelancers and professionals.

Built with
  • Laravel
  • MySQL
  • Firebase
Key capability
Tasks, Pomodoro sessions, site blocking and analytics in one app
FocusPro landing page: “Deep work, without the distractions.” beside a focus timer card that is blocking youtube.com and x.com

Overview

FocusPro is a web-based productivity and time-management application. I built it as my Final Year Project using Laravel, MySQL and Firebase, with a Chrome extension that blocks distracting sites during focus sessions.

Built for
Students, freelancers and professionals
User research
60+ survey responses
Interfaces
User and admin

Problem

Staying productive takes more than a to-do list. People need to plan and prioritize their work, protect time for focused effort, keep distracting websites out of the way, and understand where their time actually goes.

I gathered requirements through a user survey with more than 60 responses and kept the design user-centered throughout.

Solution

FocusPro brings these into one application: task management, Pomodoro focus sessions, website distraction blocking and a productivity analytics dashboard, with separate interfaces for users and administrators.

Features

Task management
Create, edit and complete tasks with priorities, categories and due dates; search, filter, sort and export them to PDF.
Pomodoro focus sessions
Adjustable focus and break lengths, with completed cycles saved to your history.
Distraction blocking
A Chrome extension blocks the sites you list while a focus session runs.
Productivity analytics
Charts for sessions per day, focus vs. break time and task completion, over 7 or 30 days, plus a PDF report.
User accounts
Sign-up, login, password reset and profile settings.
Admin panel
Platform-wide totals and user management: change roles and remove accounts.

Technology

  • Laravel

    Routing, authentication with user and admin roles, task and session logic, and PDF reports.

  • MySQL

    Stores users, tasks (status, priority, category, due date) and focus sessions.

  • Firebase

    Realtime Database holding each user’s focus status and blocked sites for the extension.

Implementation and architecture

The web app is a Laravel monolith with Blade, Tailwind CSS and Alpine.js on the front end and MySQL behind it. Analytics charts use Chart.js, and PDF reports are generated with dompdf. Site blocking needed a browser extension, so the app and the extension talk through Firebase.

  1. 1

    Start a session

    The Focus page writes the user’s focus status and blocked sites to Firebase Realtime Database.

  2. 2

    Extension picks it up

    The Manifest V3 extension reads that status, instantly via a message from the open FocusPro tab, or on a 30-second check.

  3. 3

    Sites are blocked

    It sets declarativeNetRequest rules that redirect blocked sites to a “blocked” page.

  4. 4

    End the session

    Completed cycles and duration are saved to MySQL, and the focus flag is cleared so blocking stops.

Challenges

Blocking within browser limits
A website can’t block other sites, so blocking lives in a Chrome extension. Manifest V3 stops background workers at any time, so it uses declarativeNetRequest rules, which Chrome keeps enforcing while the worker sleeps.
Time-tracking accuracy
Only completed cycles count: a session is saved only after at least one full focus-and-break cycle, and the server validates the numbers before storing them.
Intuitive UX
Designing an interface that feels intuitive to use.

Lessons learned

  • How to build an intuitive, responsive UI/UX.
  • Distraction blocking needs a real-time link between the app and the browser extension. MySQL doesn’t provide that on its own, so I used Firebase Realtime Database.
  • A better understanding of the MVC pattern through Laravel.

Screenshots

Dashboard with task, completion, session and cycle totals, an Up next task list and a 79% task progress ring
Dashboard: today at a glance (demo data).
Task list with search, category and sort filters, an overall progress bar, and tasks tagged by status, category, due date and priority
Tasks with priorities, categories and due dates.
Focus session page with a 25:00 timer ring, focus and break durations, and a blocked-websites list
Focus sessions, with the sites to block.
The extension’s block page: “Stay focused”, youtube.com is blocked while your focus session is running, with the session’s blocked sites and a back-to-session button
The extension’s block page during a session (demo values).
Analytics page with session, cycle and focus-time totals, a sessions-per-day bar chart and 7 or 30 day toggles
Analytics over 7 or 30 days, with a PDF report (demo data).
Admin overview showing totals for users, tasks, completed tasks and focus sessions across the platform
Admin overview across all users.

Want to work together? Get in touch.

17 results