Keep your loved ones informed about your work status. WorkPing pairs a simple React + Vite web app with a Chrome extension to send seamless Telegram updates when you start and stop “Work Mode”.
- Chrome extension: One-click Work Mode toggle from your browser.
- Telegram notifications: Notify selected chat IDs when Work Mode starts or ends.
- Custom messages: Configure Work Mode ON/OFF messages.
- Multiple recipients: Add multiple Telegram chat IDs.
- Daily summary (optional): End-of-day summary toggle.
- Persistent settings: User settings keyed by a unique
userIdstored in localStorage.
- Frontend: React 19, Vite 7, Tailwind CSS
- Animations/UX:
tailwindcss-animate, custom marquee/sparkle components - HTTP: Axios
- Utilities:
uuidfor clientuserId - Linting: ESLint 9
- Chrome Web Store: https://chromewebstore.google.com/detail/workping/fknebhdaeggbjkkiallkdcaggfnbiddn
- Install dependencies:
npm install
- Start the dev server:
npm run dev
- Open the app at the URL printed in the terminal (typically
http://localhost:5173).
- Build for production:
npm run build
- Preview the production build locally:
npm run preview
root/
src/
components/
main/ # Landing, form, layout
ui/ # Reusable UI/animation wrappers
assets/ # Images and static assets
main.jsx # App entry
index.html # Vite HTML entry
tailwind.config.js # Tailwind setup
vite.config.js # Vite + React plugin config
- On first load, a client
userIdis generated viauuidand stored inlocalStorage. - The settings form (
src/components/main/Form.jsx) lets you:- Add one or more Telegram
chatIds - Customize Work Mode ON/OFF messages
- Enable/disable daily summary
- Add one or more Telegram
- On save, the app POSTs your settings to the backend at
https://workping-backend.onrender.com/api/settingswith shape:{ "userId": "<uuid>", "chatIds": [ { "chatId": "-123456789", "label": "General" } ], "workOnMessage": "Starting work mode! 🚀", "workOffMessage": "Work mode ended. Time to relax! 😊", "sendSummary": true } - On load, it attempts to GET existing settings from
.../api/settings/<userId>and prefill the form. - The Chrome extension uses these saved settings to send Telegram notifications when you toggle Work Mode.
- No local
.envis required for the frontend as of now. - The backend URL is currently hardcoded in the form component:
https://workping-backend.onrender.com
- If you self-host or change the API base, update the endpoints in
src/components/main/Form.jsxaccordingly.
npm run dev: Start Vite dev servernpm run build: Build production assetsnpm run preview: Preview the built appnpm run lint: Run ESLint
- Tailwind is configured in
tailwind.config.jswith additional animations and CSS variables. - Global styles live in
src/index.cssand component-level classes are applied via Tailwind utility classes.
- Favicon and Open Graph image are configured in
index.htmlandpublic/working.png(also referenced undersrc/assets/working.png).
- If settings don’t persist across reloads:
- Ensure
localStorageis available and not blocked by the browser. - Verify the backend is reachable and returns 200 for GET/POST.
- Open DevTools Network tab to inspect
.../api/settingsrequests.
- Ensure
- If Telegram messages don’t arrive:
- Confirm the
chatIds are valid (numeric IDs; negative for groups). - Re-open the extension and ensure it’s linked to the same
userId. - Try sending simplified ON/OFF messages (no emojis) to rule out formatting issues.
- Confirm the
Proprietary. All rights reserved.
- Built with React + Vite and Tailwind CSS.
- Uses
tailwindcss-animateand custom UI components for subtle animations.