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:

  1. Host creates a room and gets a room key
  2. Players join with key
  3. Host chooses game mode, timer, and bet amount
  4. Coins are escrowed from players
  5. 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

  1. 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.

  2. AI integration reliability
    We had to stabilize session/token handling for extension lifecycle edge cases (popup reopen, token refresh timing, service worker behavior).

  3. 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.

  4. 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
Share this project:

Updates