🪷 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 lf
git 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
extensionDescription
andextensionName
, change themessage
fields (leavedescription
alone) -
In
/.package.json
, change theversion
to 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
dist
directory 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
grpc
error, kill theturbo
process and runpnpm dev
again.