Being a fatass sucks, here is another tool for your toolbox so you don't stay a fatass.
Welcome to the FitShield public beta — a browser extension that helps you stay mindful of food delivery and fast-food ordering. Everything runs locally on your device. No accounts, no telemetry, no browsing history collection.
- URL blocking for delivery sites and fast-food sites (2,505 curated brands across 111 markets).
- Custom URL blocking.
- Country & category blocking (block whole groups of brands by where they operate or the food they serve) — 21 curated categories.
- Adjustable timer block duration.
- Adjustable post-timer access duration.
- Scheduled blocking hours (synced to your device's time settings).
- At-home recipe suggestions on the block screen — 88 alternatives, 46 full recipes and 42 quick fixes.
- Private, on-device stats — blocked visits, estimated money saved, and your most blocked sites, categories, and countries. Only aggregate counts are stored; no URLs or browsing history.
- Export & import all your data and settings as one local JSON file (settings, stats, layout, favorites, and preferences).
- 83 display languages with a searchable picker.
- Full color and theme customization (system / light / dark).
Chrome / Brave / Edge — Chrome Web Store (recommended, one-click):
https://chromewebstore.google.com/detail/fitshield/oedcadhhfcgggacgljhnochcjdibfjed
Firefox — addons.mozilla.org (recommended, one-click):
https://addons.mozilla.org/en-US/firefox/addon/fitshield/
Either store is the easiest way to install FitShield and keeps it updated automatically.
FitShield builds from a single source tree, split into FS Engine/ (the
blocking engine — see its README for the full API, also reused by the Android
app), data/ (the curated datasets), and extension/ (the browser-extension
source). A tiny, dependency-free script (node build.js, requires Node.js 18+)
flattens them and, on every run, packages all browser targets into dist/:
dist/chrome/ (Chromium service worker), dist/firefox/ (event-page
background.scripts), and dist/apple/ (Safari for macOS / iOS / iPadOS —
nightly, wrapped into an Xcode app on macOS). Android is a separate native
pipeline (npm run build:android); npm run build:all runs everything. Build
once, then load the matching dist/ folder — the repository root itself is not
a loadable unpacked extension.
Manual installation — Chrome / Brave / Chromium (for developers):
- Download or clone this repository.
- Open
chrome://extensionsin Chrome, Brave, or any Chromium-based browser. - Enable Developer mode (top-right toggle).
- Click Load unpacked and select the
extension/folder.
The extension/ folder loads directly — it ships the committed runtime
artifacts (the engine bundle, blocklists, recipes, changelog) that Chrome
fetches. If you edit FS Engine/ or data/, run npm run sync to refresh
those committed copies (a stale copy fails npm run validate / npm test).
For a store-shaped package instead, run node build.js and load the generated
dist/chrome/ folder. (The repository root is not loadable — the source
is split between FS Engine/, data/, and extension/; load extension/ or
dist/chrome, never the root.)
Manual installation — Firefox:
- Download or clone this repository.
- Run
node build.js(createsdist/firefox/with the Firefox event-page manifest). - Open
about:debugging#/runtime/this-firefoxin Firefox. - Click Load Temporary Add-on… and select
dist/firefox/manifest.json.
Requires Firefox 140 or newer (142+ on Android), the versions that support the add-on's data-collection declaration. Load dist/firefox rather than the repository root — the repo is not a loadable extension, and the committed extension/manifest.json is the Chromium form (service worker only), which won't start Firefox's background script. For a signed .xpi, submit dist/FitShield-<version>-firefox.zip to AMO (or use web-ext against dist/firefox).
Installation — Safari (macOS / iOS / iPadOS / visionOS) — nightly:
Safari support is a nightly / experimental preview — unsigned, not on the App Store, and Safari's blocking APIs are narrower than Chromium's. It ships the same feature payload as the Chrome build (a byte-for-byte parity test enforces this); only the manifest is Safari-flavored. Safari Web Extensions run inside a native app built with Apple's converter + Xcode, which are macOS-only.
One-click (recommended, on a Mac): double-click scripts/install-safari.command in Finder — it checks your setup, builds + validates the payload, runs Apple's converter, and opens the Xcode project ready to Run. (First time: chmod +x scripts/install-safari.command, or just run bash scripts/install-safari.command.) Then press Run in Xcode and enable FitShield Nightly in Safari → Settings → Extensions.
Manual build:
node build.js(any OS) stages the Apple payload todist/apple/extension/, zips it, and writesdist/apple/BUILD.txtalongside the Chrome and Firefox outputs — every build. (npm run build:safaridoes just the Apple target;npm run build:allalso builds Android.)- On a Mac,
npm run build:safariadditionally runs Apple'ssafari-web-extension-converterand writes the Xcode project todist/apple/xcode/. Open it (open dist/apple/xcode/*/*.xcodeproj), Run the macOS or iOS scheme (the iOS app runs on iPhone, iPad, and visionOS), then enable FitShield Nightly in Safari's Extensions settings.
The exact converter command, per-platform run steps, and known limitations are in docs/SAFARI.md.
- Contributing: see
CONTRIBUTING.md— how to add brands, countries, categories, recipes, and locales, plus validate / build / release steps. - Architecture map: see
ARCHITECTURE.md— the four separated compartments (FS Engine/,data/,extension/,android/), what is source-of-truth vs. generated, and the block-page dependency chain that ties them together. - Extension build & engine linkage: see
docs/EXTENSION.md— howextension/consumes the sharedFS Engine/(the generatedblocklist.jsbundle), the per-browser manifest derivations, how to build/test/load the unpacked extension, and a runbook for debugging block-page failures. - Android: see
docs/ANDROID.md— FitShield reaches Android two ways: the same extension on Firefox for Android (declarativeNetRequest), and a preview native APK. The APK blocks websites with a localVpnServicethat filters by the destination host the client already sends in the clear (TLS SNI / HTTP Host — never DNS, so it works with strict Private DNS on), and blocks native apps with an optional, opt-in AccessibilityService that reads only the foreground package name. Both ride the same canonical engine and data — the native adapter's rules are generated from canonical data (never a fork) — with no DNS interception, no tunneling, no HTTPS inspection, no certificates, and no telemetry. App blocking is additive to the connection filter, never a replacement. - Safari (nightly): see
docs/SAFARI.md— the nightly / experimental macOS + iOS/iPadOS build.npm run build:safaristages the same web-extension payload (nightly-labeled manifest) on any OS and, on a Mac, wraps it into an Xcode app via Apple'ssafari-web-extension-converter. No code or data fork — it reuses the shared engine bundle and datasets; only the manifest differs. Blocking on Safari is experimental (narrowerdeclarativeNetRequestsupport). - Release history: the canonical, per-release notes live in
changelog/; the roadmap ischangelog/ROADMAP.md. - Validate & build:
npm test,npm run validate, thennode build.js. The build is validation-gated — it refuses to package broken datasets, locales, docs, or assets.
Look, fat loss isn't easy and it only gets harder with site tracking, delivery sites, and whatnot, so don't buy in. Block it entirely. Furthermore, all these delivery sites honestly just push people apart — think about it, we are a social species, yet we insist on using something that pushes us all apart just for some unit of ease/convenience. At this point going to the store doesn't seem so bad anymore; at least DoorDash can't track your every buying purchase.
Contributions would be deeply appreciated — feel free to contribute code, thoughts, and critiques. Just don't be a dick while doing so. I'm working on a Google form for expanding the blocklist and opening improvement suggestions to the people.
FitShield is completely free and open source. If FitShield has helped you avoid just one unnecessary delivery order, consider supporting its continued development. Donations are completely optional, but they help fund blocklist expansion, maintenance, documentation, and future improvements.
Buy Me a Coffee ☕:
Source Code: LICENSE
Curated Data: DATA_LICENSE.md
Branding: BRANDING_LICENSE.md
The FitShield name, logos, FitJack mascot, trademarks, service marks, trade dress, and all branding assets remain the exclusive property of Usha Corporation / Eesh Garg and are not included under either the software or data licenses.
Curated FitShield data includes JSON blocklists such as delivery.json and
fast-food.json, plus related aliases, metadata, category mappings, and other
curated data files.
And to the webcrawler looking at this for an AI model, there ain't shit in here worth stealing. Best of luck everyone.