{"id":18377836,"url":"https://github.com/nafeu/gryt-focus","last_synced_at":"2026-04-04T20:33:37.359Z","repository":{"id":80752957,"uuid":"88944280","full_name":"nafeu/gryt-focus","owner":"nafeu","description":"Clean, minimal and remotely controllable \"deep focus\" timer built to run in-browser or as dedicated instance on a Raspberry Pi","archived":false,"fork":false,"pushed_at":"2017-12-23T03:46:44.000Z","size":1128,"stargazers_count":0,"open_issues_count":6,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2026-03-04T00:33:20.970Z","etag":null,"topics":["jquery","node-js","productivity","raspberry-pi","socket","socket-io","timer"],"latest_commit_sha":null,"homepage":"http://nafeu.com/gryt-focus","language":"JavaScript","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/nafeu.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","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":"2017-04-21T05:26:34.000Z","updated_at":"2018-07-01T20:30:58.000Z","dependencies_parsed_at":"2023-03-03T13:15:58.706Z","dependency_job_id":null,"html_url":"https://github.com/nafeu/gryt-focus","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/nafeu/gryt-focus","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nafeu%2Fgryt-focus","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nafeu%2Fgryt-focus/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nafeu%2Fgryt-focus/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nafeu%2Fgryt-focus/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nafeu","download_url":"https://codeload.github.com/nafeu/gryt-focus/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nafeu%2Fgryt-focus/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31413269,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-04T20:09:54.854Z","status":"ssl_error","status_checked_at":"2026-04-04T20:09:44.350Z","response_time":60,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["jquery","node-js","productivity","raspberry-pi","socket","socket-io","timer"],"created_at":"2024-11-06T00:29:25.357Z","updated_at":"2026-04-04T20:33:37.334Z","avatar_url":"https://github.com/nafeu.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1\u003e\u003cimg src=\"http://phrakture.com/images/github/gryt-focus-icon.png\" width=\"72\" height=\"72\" valign=\"middle\"/\u003eGRYT Focus\u003c/h1\u003e\n\nSocket.IO and jQuery based \"deep focus\" timer built to run in a browser tab or as a dedicated instance on a Raspberry Pi\n\nCheck it out at: [nafeu.com/gryt-focus](http://nafeu.com/gryt-focus)\n\n### How to use it\n\n- Enter your task name\n- Set the length of your interruption free work session\n- Press the `hourglass` icon to start/stop the timer\n- Press the `exclamation` icon any time you get interrupted by external distractions unrelated to your work\n- Double click the `save` button to save your completed work session\n\n[![Build Status](https://travis-ci.org/nafeu/gryt-focus.svg?branch=master)](https://travis-ci.org/nafeu/gryt-focus)\n\n\u003cimg alt=\"GRYT Focus Screenshot\" src=\"http://phrakture.com/images/github/gryt-focus-screenshot-updated.png\" width=\"500\" valign=\"middle\"/\u003e\n\n### Compatibility\n\n- Works on most modern web browsers including android device web browsers\n- Does NOT work on iOS devices\n\n### Requirements to a local server\n\nOSX/Linux, Node.js (v7), Raspberry Pi (optional) with Raspbian Jessie\n\n### Installation\n\n```\ngit clone https://github.com/nafeu/gryt-focus.git\ncd gryt-focus\nnpm install\n```\n\n#### Updgrading Node.js on Raspberry Pi\n\n```\ncurl -sL https://deb.nodesource.com/setup_7.x | sudo -E bash -\nsudo apt-get install -y nodejs\n```\n\n### Basic Usage\n\n```\nnode server.js\n```\n\n- Open `http://localhost:8000` in a web browser.\n- Open `http://localhost:8000?remote=true` in a web browser to allow remote interaction commands.\n\n### Raspberry Pi Kiosk Usage\n\nOn your rpi, install the app accordingly and navigate to project directory. Then use:\n\n```\nsh runkiosk.sh\n```\n\n* Note that `chromium-browser` must be properly installed on your rpi\n\nIf you want to run the script on startup login, open your `~/.bashrc` file in your home directory using your preferred text editor and append the following lines at the bottom:\n\n```\nsh /home/pi/Development/gryt-focus/runkiosk.sh\n```\n\n#### Prevent your Raspberry Pi from sleeping\n\nOpen the `lightdm.conf` file at `/etc/lightdm/lightdm.conf` in your preferred text editor (you may have to prepend `sudo` to the command) and append the following line in the `[SeatDefaults]` section\n\n```\nxserver-command=X -s 0 -dpms\n```\n\n### Control Raspberry Pi Kiosk Remotely\n\nOn your local machine, run `cp sample-config.js config.js`\n\nModify the `local_app_url` and `remote_app_url` inside `config.js` accordingly.\n\n- `local_app_url` should point to your app url if you run it locally\n- `remote_app_url` should point to your app running anywhere else (ideally your Raspberry Pi)\n  (Your remote\\_app\\_url must be accessible publicly or privately on LAN)\n\nUse `send-command.js` to administer commands to the app running remotely or locally in the format:\n\n`node send-command.js [local | remote] [action] [argument]`\n\n```\nnode send-command.js remote task \"Work on a specific task\"\nnode send-command.js remote toggle\nnode send-command.js remote interrupt\nnode send-command.js remote save\nnode send-command.js remote undo\nnode send-command.js remote snooze\nnode send-command.js remote mode\n```\n\nI suggest creating an alias like so:\n\n```\nalias gryt=\"node [PATH TO PROJECT DIRECTORY]/send-command.js remote\"\n```\n\n### Development\n\n*Recommended* : Run `server.js` with [nodemon](https://nodemon.io/)\n\n```\nnpm install -g nodemon\nnodemon server.js\n```\n\n#### Running Tests\n\nUse `npm test`\n\n### License\n\nMIT","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnafeu%2Fgryt-focus","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnafeu%2Fgryt-focus","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnafeu%2Fgryt-focus/lists"}