FocusForge is a Chrome extension designed to help users stay productive by turning focus time into a reward-based experience. Users can start a timed focus session, block distracting websites, earn points for completed sessions, and redeem rewards through a simple dashboard.
This project was built as part of an HCI project and explores how gamification, feedback, and lightweight behavioral interventions can improve user focus and reduce digital distractions.
- Start and stop timed focus sessions from the popup
- Add custom distracting websites to block during focus mode
- Automatically block matching websites while a session is active
- Penalize users with point deductions when they attempt to visit blocked sites
- Reward users with points based on completed focus time
- Display progress with a live timer and progress bar
- Show user level based on accumulated points
- Provide a dashboard with:
- Overview of points, level, and streak
- Reward redemption system
- Focus history by date
- Support light/dark theme switching in the popup
FocusForge uses Chrome Extension APIs to manage the focus workflow:
popup.htmlandpopup.jshandle the main user interaction for starting and stopping focus sessions.contentScript.jschecks whether the current site matches a blocked site while focus mode is active.background.jsstores persistent state, updates points, assigns levels, and saves focus history.dashboard/contains the user dashboard for viewing rewards and focus history.
When a session starts:
- The user sets a duration and blocked websites.
- The extension stores the session state in
chrome.storage.sync. - If the user tries to open a blocked site, the page is replaced with a blocking screen and points are reduced.
- When the timer completes, the user earns points equal to the session duration in minutes.
- The session is recorded in focus history for later viewing in the dashboard.
- HTML
- CSS
- JavaScript
- Chrome Extension Manifest V3
- Chrome APIs:
chrome.storagechrome.runtimechrome.tabschrome.scripting
Project/
├── manifest.json
├── popup.html
├── popup.css
├── popup.js
├── background.js
├── contentScript.js
├── icon128.png
└── dashboard/
├── dashboard.html
├── dashboard.css
└── dashboard.js
To run this project locally as a Chrome extension:
- Open Chrome and go to
chrome://extensions/ - Enable Developer mode
- Click Load unpacked
- Select this project folder
- Pin the extension and open it from the Chrome toolbar
- Open the extension popup
- Enter the focus time in minutes
- Add websites to block, separated by commas
- Click Start Focus
- Stay away from blocked websites to avoid point penalties
- Complete the session to earn points
- Open the dashboard to view rewards and focus history
This project applies HCI principles by focusing on:
- Behavior shaping through rewards and penalties
- Clear system feedback with timers, progress bars, and status messages
- Minimal interaction cost through a compact popup interface
- Motivation through gamification and visible progress
- Support for self-regulation during online work or study sessions
- The streak feature is displayed in the dashboard but is not fully implemented in storage logic.
- Level calculation is not fully consistent between popup/background and dashboard views.
- Some reward-linked mini-game pages are referenced in code but are not included in the current project files.
- The blocked-site flow sends a timer pause message that is not currently handled in the background logic.
- Add fully functional streak tracking
- Improve reward redemption with real unlockable content
- Add analytics and weekly productivity summaries
- Support pause/resume for focus sessions
- Improve blocked-site matching with smarter rules
- Add notification or alarm support for session completion
Developed as an HCI project to explore productivity-focused browser interactions using gamification and website blocking.
This project is for academic and educational use.