{"id":19517573,"url":"https://github.com/datavorous/amine","last_synced_at":"2025-04-04T23:09:35.976Z","repository":{"id":254596550,"uuid":"846970655","full_name":"datavorous/amine","owner":"datavorous","description":"Distraction blocker which monitors your mouse and keyboard. Prevents you from switching tabs and wasting your time.","archived":false,"fork":false,"pushed_at":"2024-12-19T15:06:13.000Z","size":4783,"stargazers_count":157,"open_issues_count":6,"forks_count":12,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-28T22:14:38.745Z","etag":null,"topics":["distraction-free","flask-application","flaskwebgui","hacktober","hacktoberfest","hacktoberfest-2024","pomodoro-timer","python3","pythongui"],"latest_commit_sha":null,"homepage":"https://datavorous.github.io/amine/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/datavorous.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-08-24T13:30:59.000Z","updated_at":"2025-03-08T04:49:13.000Z","dependencies_parsed_at":"2025-01-13T01:04:41.698Z","dependency_job_id":"c907a707-bae0-40f2-a5c1-dd57a6435410","html_url":"https://github.com/datavorous/amine","commit_stats":null,"previous_names":["datavorous/focus_cli"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/datavorous%2Famine","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/datavorous%2Famine/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/datavorous%2Famine/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/datavorous%2Famine/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/datavorous","download_url":"https://codeload.github.com/datavorous/amine/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247261612,"owners_count":20910108,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["distraction-free","flask-application","flaskwebgui","hacktober","hacktoberfest","hacktoberfest-2024","pomodoro-timer","python3","pythongui"],"created_at":"2024-11-11T00:04:47.055Z","updated_at":"2025-04-04T23:09:35.954Z","avatar_url":"https://github.com/datavorous.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\r\n  \r\n\u003cimg src=\"thumb1.png\" width=\"80%\"\u003e\r\n\r\n# amine\r\n\r\n[![GitHub Release](https://img.shields.io/github/release/datavorous/amine.svg?style=flat)](https://github.com/datavorous/amine/releases)\r\n[![Github All Releases](https://img.shields.io/github/downloads/datavorous/amine/total.svg?style=flat)](https://github.com/datavorous/amine/releases)\r\n[![GitHub stars](https://img.shields.io/github/stars/datavorous/amine.svg?style=social\u0026label=Stars\u0026style=plastic)](https://github.com/datavorous/amine/stargazers)\u003cbr\u003e\r\n\u003ca href=\"https://www.producthunt.com/posts/amine?embed=true\u0026utm_source=badge-featured\u0026utm_medium=badge\u0026utm_souce=badge-amine\" target=\"_blank\"\u003e\u003cimg src=\"https://api.producthunt.com/widgets/embed-image/v1/featured.svg?post_id=484823\u0026theme=light\" alt=\"Amine - Prevents\u0026#0032;you\u0026#0032;from\u0026#0032;Switching\u0026#0032;Tabs\u0026#0032;and\u0026#0032;Wasting\u0026#0032;your\u0026#0032;time\u0026#0046;\u0026#0032; | Product Hunt\" style=\"width: 250px; height: 54px;\" width=\"250\" height=\"54\" /\u003e\u003c/a\u003e\r\n\r\n## ✨️ [DOWNLOAD for Windows](https://github.com/datavorous/amine/releases/tag/v0.0.1)\r\n\r\n\u003c/div\u003e\r\n\r\n## Features\r\n\r\n- **Customizable Pomodoro Sessions**: Set the number of sessions, focus duration, and break duration.\r\n- **Strict Distraction Blocking**:\r\n  - Blocks key combinations that might disrupt focus (e.g., Windows key, Alt+Tab).\r\n  - Prevents mouse movement to screen edges.\r\n- **Fullscreen Enforcement**: Automatically enters fullscreen mode for the chosen focus website.\r\n- **Safe Exit Mechanism**: Allows users to exit using a predefined key combination (Ctrl+Shift+Q). \u003cb\u003eONLY for the NORMAL Version, the STRICT version has no such escape mechanisms.\u003c/b\u003e\r\n- **User-Friendly Interface**: Clean, responsive design built with HTML, Tailwind CSS.\r\n\r\n## Comparison\r\n\r\n| Feature                               | amine | Freedom | RescueTime | Cold Turkey | Standard Pomodoro Timers |\r\n| ------------------------------------- | ----- | ------- | ---------- | ----------- | ------------------------ |\r\n| Website Blocking                      | ✅    | ✅      | ✅         | ✅          | ❌                       |\r\n| Fullscreen Enforcement                | ✅    | ❌      | ❌         | ❌          | ❌                       |\r\n| Key Combination Blocking              | ✅    | ❌      | ❌         | ✅          | ❌                       |\r\n| Mouse Movement Restriction            | ✅    | ❌      | ❌         | ❌          | ❌                       |\r\n| Customizable Sessions                 | ✅    | ✅      | ✅         | ✅          | ✅                       |\r\n| Local Application (No Account Needed) | ✅    | ❌      | ❌         | ✅          | Varies                   |\r\n\r\n## Stack\r\n\r\n- **Backend**: Python with Flask\r\n- **Frontend**: HTML, JavaScript, Tailwind CSS\r\n- **GUI**: FlaskWebGUI\r\n- **Dependency Management**: Poetry\r\n- **Additional Libraries**: pyautogui, keyboard, pygetwindow, winsound\r\n\r\n## Insights\r\n\r\n1. **Multithreading**: The application uses Python's threading module to run the Pomodoro timer and mouse boundary enforcement concurrently with the main Flask application.\r\n\r\n2. **Low-Level Input Blocking**: Utilizes the `keyboard` library to block specific key combinations at a system level, providing robust protection against common distraction patterns.\r\n\r\n3. **Window Management**: Employs `pygetwindow` to manipulate application windows, ensuring the focus stays on the target website.\r\n\r\n4. **Custom GUI with Flask**: Leverages FlaskWebGUI to create a desktop application experience using web technologies, allowing for a responsive and easily customizable interface.\r\n\r\n5. **Tailwind CSS Integration**: Uses Tailwind CSS via CDN for rapid UI development and consistent styling across the application.\r\n\r\n## Setup and Installation\r\n\r\n1. Clone the repository:\r\n\r\n   ```\r\n   git clone https://github.com/datavorous/amine.git\r\n   cd amine\r\n   ```\r\n\r\n2. Install Poetry (if not already installed):\r\n\r\n   ```\r\n   pip install poetry\r\n   ```\r\n\r\n3. Install dependencies using Poetry:\r\n\r\n   ```\r\n   poetry install\r\n   ```\r\n\r\n4. Run the application:\r\n   ```\r\n   cd amine\r\n   poetry run python webapp.py\r\n   ```\r\n\r\n## Usage\r\n\r\n1. Launch the application.\r\n2. On the main page, set your desired Pomodoro parameters:\r\n   - Number of sessions\r\n   - Focus duration (in minutes)\r\n   - Break duration (in minutes)\r\n   - Website URL for focusing\r\n3. Click \"Start\" to begin your Pomodoro session.\r\n4. The application will open your chosen website in fullscreen mode and start the timer.\r\n5. To exit at any time, use the key combination Ctrl+Shift+Q.\r\n\r\n## Important Notes\r\n\r\n- Avoid manually exiting fullscreen mode or moving your mouse to screen edges during a session.\r\n- The application may perform an initial page click to ensure fullscreen mode, which could cause minor disruptions.\r\n\r\n## Contributing\r\n\r\nContributions to amine are welcome. Please feel free to submit a Pull Request.\r\n\r\n### Our Notable Contributors\r\n\r\n   \u003ca href=\"https://github.com/datavorous/amine/graphs/contributors\"\u003e\r\n   \u003cimg src=\"https://contrib.rocks/image?repo=datavorous/amine\" /\u003e\r\n   \u003c/a\u003e\r\n\r\n## License\r\n\r\n[MIT License](LICENSE)\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdatavorous%2Famine","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdatavorous%2Famine","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdatavorous%2Famine/lists"}