Skip to content

Repository files navigation

FocusLock

Chrome extension (Manifest V3) for website access rules: Allow, Block, or Lock with a PIN.

Single purpose: help you stay focused and protect sensitive sites by controlling which websites you can open.

Not parental control, a password manager, VPN, ad blocker, AI assistant, antivirus, or a productivity suite.

Architecture

See ARCHITECTURE.md for modules, message passing, storage schema, rule engine, and scheduler.

Data model: docs/DATA_MODEL.md — canonical types, defaults, migration, future sync/auth extension points (src/storage/model/).

UX: docs/UX.md — design system, screen specs, copy deck, accessibility, dark mode.

Roadmap: docs/ROADMAP.md — incremental milestones and QA checklists.

Layout:

src/background/   service worker, enforcer, DNR, alarms, router
src/core/         rule engine, PIN, session, scheduler, messages
src/storage/      local + session persistence
src/utils/        url, id, time helpers
src/popup/        toolbar UI
src/options/      settings + schedules
src/pages/        blocked, locked, onboarding
src/content/      reserved (unused for primary enforcement)

Install (developer mode)

  1. Run npm install
  2. Run npm run build
  3. Open chrome://extensions
  4. Enable Developer mode → Load unpacked → select the dist folder

Package for Chrome Web Store

npm run package:zip

Creates focuslock-v{version}.zip in the project root.

Scripts

Command Description
npm run build Typecheck + production build into dist/
npm test Unit tests (rules, PIN, scheduler, migration, statistics)
npm run smoke Validate built dist/ artifact
npm run package:zip Build and zip for store / sideload

Privacy

Rules, schedules, and PIN data stay on your device. See store/privacy-policy.md.

Chrome Web Store submission: store/cws-dashboard.md (privacy policy hosting, dashboard checklist). Production URLs and support email are in store/site-config.json:

About

FocusLock — website access rules for Chrome

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages