-
-
User Profile
-
AI-generated achievements with unique titles and descriptions based on each user’s behavior patterns and scroll activity
-
Live YouTube scroll tracking in real distance (meters) as you browse
-
World Ranking (based on distance)
-
Friends Ranking (based on distance)
-
Battle tab lets users create private rooms, invite friends with a room code, and compete in coin-bet mini games.
-
Game room
-
View after winning a bet
-
View after losing a bet
-
Personalized AI roasts based on your real scroll activity.
-
Users can set their account to private to keep their data hidden
Inspiration
We built DoomScroller because “I scroll too much” is a common problem, but most people can’t measure it in a meaningful way. Time-based trackers felt too passive, so we wanted to make scrolling behavior visible, interactive, and hard to ignore. The core idea was: if fitness apps can gamify steps, we can gamify doomscrolling.
What it does
DoomScroller is a Chrome extension that tracks social-media scrolling and converts it into real distance in meters. Instead of vague usage stats, users get immediate feedback on how far they actually scrolled.
The app provides:
- Today distance (live)
- Per-app breakdown (live)
- Total distance (synced and persisted)
On top of tracking, DoomScroller includes a coin economy:
- Users earn 1 coin per 20 meters
- Coins are stored in wallet balance
- Coins are used as bets in multiplayer battle rounds
It also includes social and competitive features:
- Friend search + friend requests
- Friends list + remove friend flow
- World and friends leaderboards
- User profile + avatar visibility
The AI chat is personalized to the user’s own behavior. It uses that user’s own scroll activity patterns (top apps, consistency, recent distance, session behavior) to generate relevant roast-style responses, rather than generic chatbot text.
Battle mode adds betting mini-games:
- Host creates a room and gets a room key
- Players join with key
- Host chooses game mode, timer, and bet amount
- Coins are escrowed from players
- Winner is selected by game logic and receives payout
Currently implemented game modes:
- Scroll Sprint: highest distance within timer wins
- Target Chase: first player to hit target distance wins
Gameplay feedback is real-time and shown on the main browsing screen:
- Round timer overlay while game is active
- Winner/loser overlays when round ends
- Confetti for winners
- Players remain in same room for rematches
How we built it
We followed a spec-driven development process and implemented the system in layers:
- React + TypeScript + Vite for extension UI
- Content scripts + service worker for tracking/runtime events
- Supabase Auth + Postgres + Realtime + Edge Functions for backend
- Gemini integration for personalized AI responses
One of our biggest architecture decisions was local-first updates:
- Update tracking and wallet-related UI instantly in local cache
- Sync asynchronously to backend/database This removed user-perceived lag and made the product feel responsive.
Challenges we ran into
Slow response times in early versions
Backend-first updates caused delays (sometimes 10+ seconds), which made tracking feel broken.
Fix: local-first state updates with background sync.AI integration reliability
We had to stabilize session/token handling for extension lifecycle edge cases (popup reopen, token refresh timing, service worker behavior).DNS/network filtering on managed Wi-Fi
On office/school networks (UWS-like environments), required Supabase domains could be blocked, causing login/chat failures.
Fix: better error handling and clearer guidance; practical workaround is switching to personal hotspot.Realtime multiplayer consistency
We had to ensure room membership, host transfer, kick/leave behavior, and round status update live without tab switching.
Accomplishments that we're proud of
- Real-time meters-based tracking that feels instant
- Coin economy integrated with betting gameplay
- Multiplayer rooms with host key sharing and join-by-code
- Live round overlays (timer/result) on the main browsing surface
- Personalized AI roasting based on per-user behavior context
- Stable social graph (friends) + global/friends leaderboard experience
What we learned
We learned that extension products are mostly about reliability under lifecycle edge cases: auth state continuity, background/runtime messaging, realtime sync, and safe RLS policies. We also learned that if a behavior app is not instant, users won’t trust it; local-first design was the turning point for product quality.
What's next for DoomScroller
- Add more battle game modes and richer betting mechanics
- Expand achievement system with stronger visual progression
- Improve anti-cheat and competitive fairness checks
- Polish onboarding + deploy production release to Chrome Web Store
Built With
- auth
- chromeextension
- deno
- edgefunctions
- geminiapi
- git/github
- manifestv3
- npm
- react
- supabase
- tailwind
- typescript
- vite

Log in or sign up for Devpost to join the conversation.