AI-powered Chrome extension to block distracting websites with smart temporary unblock functionality.
smart-blocker/
├── client/ # Chrome extension
├── server/ # Backend API (AI bouncer)
└── dist/ # Built extension (load in Chrome)
cd client
npm install
npm run buildBuilt extension will be in dist/ folder.
cd server
cp .env.example .env # Add your GROQ_API_KEY
deno task devServer runs on http://localhost:8000
- Go to
chrome://extensions - Enable "Developer mode"
- Click "Load unpacked"
- Select the
client/distfolder
cd client && npm run dev # Watch mode for extension
cd server && deno task dev # Run server (see Quick Start for first-time setup)- Bump version in
client/manifest.json - Build and zip:
Creates
cd client npm run packagefocus-shield.zipin repo root. - Upload to Chrome Web Store Developer Dashboard
- AI Bouncer: Uses Llama 3.3 70B to validate unblock reasons (e.g., "Check Facebook Marketplace" vs "just bored")
- Block distracting sites with allowlist/blocklist
- Allow-Only Mode: Block everything except allowed sites
- Temporary unblock with AI-determined duration (1-60 minutes)
- Todo Reminders: Save blocked sites to check later
- Dark mode support (system preference)
- Instant blocking at tab navigation level
- Settings page with live unblock countdown
- Analytics and usage tracking
- Scheduled blocking (time-based rules)
- Custom AI prompts for different sites
Settings available at: chrome-extension://<id>/src/options/options.html
Always Allowed Sites:
remnote.com
claude.ai
calendar.google.com
Blocked Sites:
https://www.youtube.com/
https://www.tiktok.com/
https://www.facebook.com/
Allow-Only Mode: Toggle to block all sites except those in the allowed list.
Client:
- TypeScript + React 19
- Tailwind CSS v4
- Vite + Chrome Extension Manifest v3
- Service worker for instant blocking
Server:
- Deno runtime
- Groq API (Llama 3.3 70B)
- Zod for structured outputs
- CORS-enabled REST API