Built with Vue 3, Vite, TypeScript, and Tailwind CSS. Targets Chrome Manifest V3.
./dist - compiled extension output (load this in Chrome)
./src - all source files
./src/chrome - Chrome extension scripts (background, content scripts)
./src/entry - Vue entry points (HTML + TS pairs)
./src/view - Vue components
./src/assets - static assets used by components
./manifest.json - Chrome extension manifest (single source of truth)
./tests - unit tests
- Node.js 18+
- npm 9+
npm installBuilds the extension and rebuilds automatically on file changes:
npm run devThen load ./dist as an unpacked extension in Chrome (see Loading in Chrome).
Chrome will pick up most changes automatically when files rebuild — for background script
changes you may need to click the reload icon on chrome://extensions.
- Go to
chrome://extensions - Enable Developer mode (top right toggle)
- Click Load unpacked and select the
./distfolder - The extension icon appears in the toolbar
npm run buildOutput is written to ./dist. The manifest's host_permissions will not include
http://localhost:3000/* (that is injected only in development mode).
npm testnpm run test:unitTests use Vitest with jsdom and are configured inline in vite.config.ts.
npm run lintUses ESLint v9 with flat config (eslint.config.mjs). Automatically fixes fixable issues.
| Tool | Purpose |
|---|---|
| Vite | Build tool |
| vite-plugin-web-extension | Chrome extension build support |
| Vue 3 | UI framework |
| Vitest | Unit testing |
| ESLint v9 | Linting (flat config) |
| Tailwind CSS | Styling |
| TypeScript | Type safety |