Easy Website Blocker is a Chrome extension designed to help you stay focused by blocking distracting websites, while allowing specific pages through customizable exceptions. Perfect for maintaining productivity without sacrificing access to essential resources.
- Smart Website Blocking: Block entire domains with a single click
- Flexible Exceptions: Allow specific pages or sections within blocked sites
- Instant Blocking: No need to restart the browser for changes to take effect
- Intuitive User Experience: Quick access via popup menu and a detailed options page
- Efficient & Secure: Built on Chrome's Manifest V3 using declarativeNetRequest, with local storage for privacy
- Frontend Framework: React + TypeScript
- Styling: Tailwind CSS
- UI Components: shadcn/ui, Radix UI
- Icons: Lucide React
- Build Tool: Vite
- Extension Framework: Chrome Extensions API (Manifest V3)
- Development Tools: TypeScript, ESLint, Prettier, CRXJS for Vite
- Node.js (v16 or higher)
- npm or yarn
- Chrome browser
-
Clone the repository:
git clone https://github.com/aleksa-codes/easy-website-blocker.git cd easy-website-blocker
-
Install dependencies:
npm install # or yarn install
-
Build the extension:
npm run build # or yarn build
-
Load the extension in Chrome:
- Open Chrome and navigate to
chrome://extensions/
- Enable "Developer mode" in the top right
- Click "Load unpacked" and select the
dist
folder
- Open Chrome and navigate to
- Blocking a Website: Click the extension icon, enter the domain (e.g.,
facebook.com
), and click "Block." - Adding Exceptions: Go to the options page, select the blocked website, and add path exceptions (e.g.,
facebook.com/groups/productivity
). - Managing Blocked Sites: Use the popup for quick blocking/unblocking, or visit the options page for detailed management.
easy-website-blocker/
├── src/
│ ├── components/ # Reusable UI components
│ ├── popup/ # Extension popup interface
│ ├── options/ # Options page
│ ├── blocked/ # Blocked page interface
│ ├── utils/ # Utility functions
│ ├── types/ # TypeScript types
│ └── background.ts # Service worker
├── public/ # Static assets
│ └── rules/ # Blocking rules
└── manifest.json # Extension manifest
Contributions are welcome! Here's how you can help:
- Fork the repository
- Create your feature branch:
git checkout -b feature/AmazingFeature
- Commit your changes:
git commit -m 'Add some AmazingFeature'
- Push to the branch:
git push origin feature/AmazingFeature
- Open a Pull Request
- Follow existing code styles and conventions
- Add TypeScript types for new features
- Test new features and update documentation as needed
This project is licensed under the MIT License - see the LICENSE file for details.
Made with ❤️ by aleksa.codes