🪷 ZenCycle is a Chrome extension designed to help you regain focus and boost productivity by incorporating the Pomodoro technique with website-blocking feature. With customizable focus and break durations, this extension empowers you to manage distractions and stay on track with your tasks.
🪷 Customizable focus duration, break duration, and list of blocked websites and countdown timer
🪷 Dark mode and light mode
🪷 Focus mode with website-blocking feature
🪷 Push notification with sound after each focus and break
- React18
- TypeScript
- Tailwindcss
- Vite with Rollup
- Turborepo
- Prettier
- ESLint
- Chrome Extensions Manifest Version 3
- Custom i18n package
- Custom HMR (Hot Module Rebuild) plugin
- End-to-end testing with WebdriverIO
-
When you're using Windows run this:
git config --global core.eol lfgit config --global core.autocrlf input
This will set the EOL (End of line) character to be the same as on Linux/macOS. Without this, our bash script won't work, and you will have conflicts with developers on Linux/macOS.
-
Clone this repository.
-
Edit
/packages/i18n/locales/{your locale(s)}/messages.json -
In the objects
extensionDescriptionandextensionName, change themessagefields (leavedescriptionalone) -
In
/.package.json, change theversionto the desired version of your extension. -
Install pnpm globally:
npm install -g pnpm(check your node version >= 18.19.1) -
Run
pnpm install
Then, depending on the target browser:
- Run:
nvm install stable && nvm use stable- Dev:
pnpm dev(on Windows, you should run as administrator; see issue#456) - Prod:
pnpm build
- Dev:
- Open in browser -
chrome://extensions - Check - Developer mode
- Click - Load unpacked in the upper left corner
- Select the
distdirectory from the boilerplate project
- Run
pnpm i <package> -w
- Run
pnpm i <package> -F <module name>
package - Name of the package you want to install e.g. nodemon
module-name - You can find it inside each package.json under the key name, e.g. @extension/content-script, you can use only content-script without @extension/ prefix
If saving source files doesn't cause the extension HMR code to trigger a reload of the browser page, try this:
- Ctrl+C the development server and restart it (
pnpm run dev) - If you get a
grpcerror, kill theturboprocess and runpnpm devagain.