{"id":25626626,"url":"https://github.com/dorianim/distributed-timer","last_synced_at":"2025-10-25T20:16:08.733Z","repository":{"id":143081333,"uuid":"608083526","full_name":"dorianim/distributed-timer","owner":"dorianim","description":"A simple, distributed timer, originally designed for bouldering for competitions.","archived":false,"fork":false,"pushed_at":"2024-07-17T09:17:31.000Z","size":855,"stargazers_count":4,"open_issues_count":4,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-28T01:47:30.616Z","etag":null,"topics":["boulder","boulder-timer","bouldering","competition","synchronized-timer","timer"],"latest_commit_sha":null,"homepage":"https://timer.itsblue.de","language":"Svelte","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dorianim.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":"2023-03-01T09:34:48.000Z","updated_at":"2024-07-17T09:17:20.000Z","dependencies_parsed_at":"2024-03-25T11:57:19.909Z","dependency_job_id":"aebc04c2-997c-420b-9a38-81b4d1a3ceed","html_url":"https://github.com/dorianim/distributed-timer","commit_stats":null,"previous_names":[],"tags_count":12,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dorianim%2Fdistributed-timer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dorianim%2Fdistributed-timer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dorianim%2Fdistributed-timer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dorianim%2Fdistributed-timer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dorianim","download_url":"https://codeload.github.com/dorianim/distributed-timer/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248879309,"owners_count":21176476,"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":["boulder","boulder-timer","bouldering","competition","synchronized-timer","timer"],"created_at":"2025-02-22T16:31:28.245Z","updated_at":"2025-10-25T20:16:01.685Z","avatar_url":"https://github.com/dorianim.png","language":"Svelte","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003e\n    distributed-timer\n\u003c/h1\u003e\n\nA simple, distributed timer, originally designed for bouldering for competitions.\n\n# Features\n\n- Create timers with custom sequences\n- Indication sound at one minute and a countdown at five seconds\n- Show the timer on many devices\n- Time is synced accurately even when the clock of the devices is out of sync\n- set custom background colors\n- change color or labels without restarting the timer\n- start the timer at a scheduled point of time in the future\n- prevent a device showing the time from going to sleep\n\n## Screenshots\n\n\u003ctable align=\"center\"\u003e\n    \u003ctr\u003e\n        \u003ctd align=\"center\"\u003e\n            \u003ca href=\"https://raw.githubusercontent.com/dorianim/distributed-timer/main/.github/media/screenshot-1.png\"\u003e\n                \u003cimg src=\"https://raw.githubusercontent.com/dorianim/distributed-timer/main/.github/media/screenshot-1.png\" width=\"500px\" /\u003e\n            \u003c/a\u003e\n        \u003c/td\u003e\n        \u003ctd align=\"center\"\u003e\n            \u003ca href=\"https://raw.githubusercontent.com/dorianim/distributed-timer/main/.github/media/screenshot-2.png\"\u003e\n                \u003cimg src=\"https://raw.githubusercontent.com/dorianim/distributed-timer/main/.github/media/screenshot-2.png\" width=\"500px\" /\u003e\n            \u003c/a\u003e\n        \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd align=\"center\"\u003e\n            \u003ca href=\"https://raw.githubusercontent.com/dorianim/distributed-timer/main/.github/media/screenshot-3.png\"\u003e\n                \u003cimg src=\"https://raw.githubusercontent.com/dorianim/distributed-timer/main/.github/media/screenshot-3.png\" width=\"500px\" /\u003e\n            \u003c/a\u003e\n        \u003c/td\u003e\n        \u003ctd align=\"center\"\u003e\n            \u003ca href=\"https://raw.githubusercontent.com/dorianim/distributed-timer/main/.github/media/screenshot-4.png\"\u003e\n                \u003cimg src=\"https://raw.githubusercontent.com/dorianim/distributed-timer/main/.github/media/screenshot-4.png\" width=\"500px\" /\u003e\n            \u003c/a\u003e\n        \u003c/td\u003e\n    \u003c/tr\u003e\n\u003c/table\u003e\n\n# Usage\n\nYou can use our publicly hosted instance free of charge: **[timer.itsblue.de](https://timer.itsblue.de)**\n\nIf you'd like to self-host, you can also use docker:\n\n- 1. install docker and docker-compose on your system (follow the [official guide](https://docs.docker.com/engine/install/#server))\n- 2. create the folder `/opt/distributed-timer`\n- 3. create the file `/opt/distributed-timer/docker-compose.yml` with this content:\n\n  ```yaml\n  services:\n    timer:\n      image: ghcr.io/dorianim/distributed-timer:latest\n      environment:\n        JWT_KEY: some-random-string\n        REDIS_STRING: \"redis://:@redis/0\"\n      ports:\n        - 3000:3000\n      depends_on:\n        - redis\n\n    redis:\n      image: docker.io/redis\n      volumes:\n        - ./redis-data:/data\n  ```\n\n  Make sure, to replace the JWT_KEY.\n\n- 4. start the container: `docker-compose up -d`\n\n# Build\n\n## binary\n\nTo build a binary, you need:\n\n- cargo \u003e= 1.67.1\n- npm \u003e= 8.19.2\n\nTo build, run `cargo build --release` in the repo.\n\n## docker image\n\nTo build the docker image, simply run `docker build . -t boulder-timer` in the repo.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdorianim%2Fdistributed-timer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdorianim%2Fdistributed-timer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdorianim%2Fdistributed-timer/lists"}