|
1 | | -# Time Spent Timer Browser Extension |
| 1 | +# FlowState-Digital-Wellness-Time-Tracker-Browser-Extension |
2 | 2 |
|
3 | | -A lightweight, privacy-friendly browser extension that helps you manage your time online by displaying a floating timer on websites you visit. It gently nudges you after spending 5, 10, and 15 minutes on a site, encouraging mindful browsing. |
| 3 | + |
| 4 | + |
| 5 | + |
| 6 | + |
| 7 | + |
| 8 | + |
4 | 9 |
|
5 | | -## Features |
| 10 | +<p align="center"> |
| 11 | + <a href="https://github.com/chirag127/FlowState-Digital-Wellness-Time-Tracker-Browser-Extension/stargazers"> |
| 12 | + <img src="https://img.shields.io/github/stars/chirag127/FlowState-Digital-Wellness-Time-Tracker-Browser-Extension?style=social" alt="Star on GitHub"> |
| 13 | + </a> |
| 14 | +</p> |
6 | 15 |
|
7 | | -- **Floating Timer UI**: Displays time spent on the current site with customizable appearance |
8 | | -- **Gentle Nudges**: Customizable reminders at 5, 10, and 15 minutes (adjustable) |
9 | | -- **Do Not Disturb Mode**: Temporarily disable nudges when you need to focus |
10 | | -- **Site Blacklist**: Disable the timer on specific sites |
11 | | -- **Customizable Settings**: Adjust timer position, size, opacity, and theme |
12 | | -- **Privacy-Focused**: All data stays on your device, no tracking or data collection |
| 16 | +## The Digital Sanctuary for Your Browsing Habits |
13 | 17 |
|
14 | | -## Installation |
| 18 | +FlowState is an elite, privacy-focused browser extension for digital wellness. It tracks time spent on websites and provides gentle, customizable nudges to encourage mindful browsing and maintain focus. Built with Manifest V3 and Zero-Telemetry principles. |
15 | 19 |
|
16 | | -### From Chrome Web Store (Coming Soon) |
| 20 | +## 🚀 Architecture Overview |
17 | 21 |
|
18 | | -1. Visit the Chrome Web Store |
19 | | -2. Search for "Time Spent Timer" |
20 | | -3. Click "Add to Chrome" |
| 22 | +mermaid |
| 23 | +graph TD |
| 24 | + A[Browser Extension Core (Manifest V3)] --> B{Content Scripts} |
| 25 | + A --> C{Background Service Worker} |
| 26 | + B --> D[UI Components (React/Preact)] |
| 27 | + C --> E[Time Tracking Logic] |
| 28 | + C --> F[Nudge Engine] |
| 29 | + C --> G[Storage (Local/Sync)] |
| 30 | + E --> G |
| 31 | + F --> G |
| 32 | + A --> H[Popup UI] |
| 33 | + H --> C |
21 | 34 |
|
22 | | -### Manual Installation (Developer Mode) |
23 | 35 |
|
24 | | -1. Download or clone this repository |
25 | | -2. Open Chrome and go to `chrome://extensions/` |
26 | | -3. Enable "Developer mode" in the top-right corner |
27 | | -4. Click "Load unpacked" and select the `extension` folder from this repository |
| 36 | +## 🧭 Table of Contents |
28 | 37 |
|
29 | | -## Usage |
| 38 | +* [About FlowState](#about-flowstate) |
| 39 | +* [Key Features](#key-features) |
| 40 | +* [Getting Started](#getting-started) |
| 41 | +* [Development](#development) |
| 42 | +* [Contribution](#contribution) |
| 43 | +* [License](#license) |
30 | 44 |
|
31 | | -After installation, the extension will automatically start tracking time spent on websites: |
| 45 | +## ✨ Key Features |
32 | 46 |
|
33 | | -- A floating timer will appear on every website (can be customized in settings) |
34 | | -- Nudges will appear after 5, 10, and 15 minutes (customizable) |
35 | | -- Click the extension icon to see options for the current site |
36 | | -- Access full settings by right-clicking the extension icon and selecting "Options" |
| 47 | +* **Privacy-First Design:** Zero telemetry. All data is stored locally or synced via browser sync storage. No external data exfiltration. |
| 48 | +* **Manifest V3 Compliant:** Built for the future of browser extensions. |
| 49 | +* **Intelligent Time Tracking:** Accurately monitors time spent on individual websites. |
| 50 | +* **Customizable Nudges:** Set personalized prompts and timers to encourage breaks or refocusing. |
| 51 | +* **Focus Modes:** Configure specific times or website lists for enhanced concentration. |
| 52 | +* **Elegant UI:** Clean and intuitive interface accessible via a browser popup. |
| 53 | +* **Performance Optimized:** Built with Vite for fast development builds and optimized production output. |
37 | 54 |
|
38 | | -## Customization |
| 55 | +## 💻 Getting Started |
39 | 56 |
|
40 | | -### Timer Appearance |
| 57 | +### Prerequisites |
41 | 58 |
|
42 | | -- **Position**: Top-right, top-left, bottom-right, or bottom-left |
43 | | -- **Size**: Small, medium, or large |
44 | | -- **Opacity**: Adjust transparency from 10% to 100% |
45 | | -- **Theme**: Light or dark |
46 | | -- **Show Seconds**: Toggle seconds display on/off |
| 59 | +* Node.js (v18+ recommended) |
| 60 | +* npm or Yarn |
47 | 61 |
|
48 | | -### Nudge Settings |
| 62 | +### Installation |
49 | 63 |
|
50 | | -- **Timing**: Customize when nudges appear (in minutes) |
51 | | -- **Messages**: Personalize the nudge messages |
52 | | -- **Do Not Disturb**: Temporarily disable all nudges |
| 64 | +1. **Clone the repository:** |
| 65 | + bash |
| 66 | + git clone https://github.com/chirag127/FlowState-Digital-Wellness-Time-Tracker-Browser-Extension.git |
| 67 | + cd FlowState-Digital-Wellness-Time-Tracker-Browser-Extension |
| 68 | + |
53 | 69 |
|
54 | | -### Site Blacklist |
| 70 | +2. **Install dependencies:** |
| 71 | + bash |
| 72 | + npm install |
| 73 | + # or |
| 74 | + yarn install |
| 75 | + |
55 | 76 |
|
56 | | -- Add domains where you don't want the timer to appear |
| 77 | +3. **Run in development mode:** |
| 78 | + bash |
| 79 | + npm run dev |
| 80 | + # or |
| 81 | + yarn dev |
| 82 | + |
| 83 | + This will build the extension and watch for changes. You can then load the `dist` folder as an unpacked extension in your browser (e.g., Chrome, Edge). |
57 | 84 |
|
58 | | -## Privacy |
| 85 | +### Production Build |
59 | 86 |
|
60 | | -This extension: |
| 87 | +bash |
| 88 | +npm run build |
| 89 | +# or |
| 90 | +yarn build |
61 | 91 |
|
62 | | -- Does not collect any data |
63 | | -- Does not send any information to external servers |
64 | | -- Stores all settings locally on your device |
65 | | -- Does not track your browsing history |
66 | 92 |
|
67 | | -## Development |
| 93 | +This command generates the optimized production build in the `dist` folder. |
68 | 94 |
|
69 | | -This extension is built using: |
| 95 | +## 🛠️ Development Standards & Principles |
70 | 96 |
|
71 | | -- Manifest V3 |
72 | | -- HTML/CSS/JavaScript |
73 | | -- Chrome Extension APIs |
| 97 | +This project adheres to the following core principles: |
74 | 98 |
|
75 | | -### Project Structure |
| 99 | +* **SOLID:** Enhancing maintainability and scalability. |
| 100 | +* **DRY (Don't Repeat Yourself):** Minimizing code duplication. |
| 101 | +* **YAGNI (You Ain't Gonna Need It):** Focusing on essential features. |
| 102 | +* **Performance:** Prioritizing efficient code and resource usage. |
| 103 | +* **Security:** Implementing best practices for browser extensions, especially regarding Manifest V3 and data privacy. |
76 | 104 |
|
77 | | -``` |
78 | | -extension/ |
79 | | -├── manifest.json |
80 | | -├── background/ |
81 | | -│ └── background.js # Tab monitoring, timer logic, alarm triggers |
82 | | -├── content/ |
83 | | -│ └── content.js # Injects floating timer UI |
84 | | -│ └── timerUI.css # Timer UI styles |
85 | | -├── popup/ |
86 | | -│ └── popup.html # Basic popup |
87 | | -│ └── popup.js |
88 | | -│ └── popup.css |
89 | | -├── options/ |
90 | | -│ └── options.html # Settings page |
91 | | -│ └── options.js # Save/load preferences |
92 | | -│ └── options.css |
93 | | -├── utils/ |
94 | | -│ └── timer.js # Timer utilities |
95 | | -│ └── storage.js # Storage wrapper |
96 | | -│ └── constants.js # Default settings |
97 | | -├── assets/ |
98 | | -│ └── icon128.png # Extension icon |
99 | | -│ └── icon48.png |
100 | | -│ └── icon16.png |
101 | | -└── _locales/ |
102 | | - └── en/ |
103 | | - └── messages.json # i18n support |
104 | | -``` |
| 105 | +## <details> |
| 106 | +<summary>🤖 AI Agent Directives</summary> |
105 | 107 |
|
106 | | -## Contributing |
| 108 | +### Core Directives |
107 | 109 |
|
108 | | -Contributions are welcome! Please feel free to submit a Pull Request. |
| 110 | +* **Repository Name:** `FlowState-Digital-Wellness-Time-Tracker-Browser-Extension` |
| 111 | +* **Primary Function:** Digital Wellness & Time Tracking Browser Extension |
| 112 | +* **Platform:** Browser Extension (Manifest V3) |
| 113 | +* **Technology Stack:** TypeScript, Vite, TailwindCSS, Biome, Playwright, React/Preact. |
109 | 114 |
|
110 | | -## License |
| 115 | +### Architectural Patterns |
111 | 116 |
|
112 | | -This project is licensed under the MIT License - see the LICENSE file for details. |
| 117 | +* **Adhere to Manifest V3 specifications:** Employ service workers, secure content scripts, and appropriate storage mechanisms. |
| 118 | +* **Feature-Sliced Design (FSD) principles:** Organize code into features, layers, and segments for maintainability and scalability. |
| 119 | +* **Component-Based Architecture:** Utilize React/Preact for declarative UI development. |
| 120 | +* **State Management:** Employ Signals or similar efficient state management patterns. |
113 | 121 |
|
114 | | -## Acknowledgments |
| 122 | +### Linting & Formatting |
115 | 123 |
|
116 | | -- Inspired by the need for mindful browsing in our increasingly digital world |
117 | | -- Thanks to all contributors and users for their feedback and support |
| 124 | +* **Tool:** Biome (v1.7.0+) |
| 125 | +* **Configuration:** `.biome.json` file in the root directory. |
| 126 | +* **Verification Command:** `npm run lint` or `yarn lint` |
| 127 | +* **Formatting Command:** `npm run format` or `yarn format` |
| 128 | + |
| 129 | +### Testing |
| 130 | + |
| 131 | +* **Unit Testing:** Vitest (v2.x+) |
| 132 | +* **E2E Testing:** Playwright (v1.x+) |
| 133 | +* **Test Runner:** `npm test` or `yarn test` |
| 134 | + |
| 135 | +### Verification Commands |
| 136 | + |
| 137 | +* **Development Server:** `npm run dev` / `yarn dev` |
| 138 | +* **Production Build:** `npm run build` / `yarn build` |
| 139 | +* **Linting:** `npm run lint` / `yarn lint` |
| 140 | +* **Formatting:** `npm run format` / `yarn format` |
| 141 | +* **Unit Tests:** `npm test:unit` / `yarn test:unit` |
| 142 | +* **E2E Tests:** `npm test:e2e` / `yarn test:e2e` |
| 143 | + |
| 144 | +### Security Protocols |
| 145 | + |
| 146 | +* **Manifest V3 Compliance:** Strict adherence to security best practices, including leveraging the service worker model and content security policies. |
| 147 | +* **Data Privacy:** No unnecessary data collection. User data remains local or uses browser sync storage only. |
| 148 | +* **Dependency Auditing:** Regularly audit dependencies for vulnerabilities. |
| 149 | + |
| 150 | +</details> |
| 151 | + |
| 152 | +## 📜 License |
| 153 | + |
| 154 | +This project is licensed under the **Creative Commons Attribution-NonCommercial 4.0 International License (CC BY-NC 4.0)**. |
| 155 | + |
| 156 | +See the `LICENSE` file for more details. |
0 commit comments