{"id":43493050,"url":"https://github.com/yuschick/horologist","last_synced_at":"2026-02-03T10:17:08.006Z","repository":{"id":46870776,"uuid":"46564443","full_name":"yuschick/horologist","owner":"yuschick","description":"Horologist is a JavaScript library for animating DOM elements to represent time in the same ways as many of the world's greatest haute horologist watchmakers","archived":false,"fork":false,"pushed_at":"2024-12-16T14:56:49.000Z","size":4222,"stargazers_count":25,"open_issues_count":2,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-10-01T08:55:54.705Z","etag":null,"topics":["animation","css","haute","horologist","horology","javascript","svg","ticktock","ticktock-js","typescript","watchmaking"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","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/yuschick.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE.md","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},"funding":{"github":"yuschick"}},"created_at":"2015-11-20T13:46:47.000Z","updated_at":"2025-04-29T20:28:09.000Z","dependencies_parsed_at":"2024-12-16T15:44:07.650Z","dependency_job_id":"2b5238fc-e6e1-440b-b09d-10728c03a632","html_url":"https://github.com/yuschick/horologist","commit_stats":{"total_commits":279,"total_committers":3,"mean_commits":93.0,"dds":0.5232974910394266,"last_synced_commit":"d90db2f8e22e9cdf834e411dc7d80e572d7ab3ff"},"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/yuschick/horologist","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yuschick%2Fhorologist","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yuschick%2Fhorologist/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yuschick%2Fhorologist/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yuschick%2Fhorologist/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/yuschick","download_url":"https://codeload.github.com/yuschick/horologist/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yuschick%2Fhorologist/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29041057,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-03T10:09:22.136Z","status":"ssl_error","status_checked_at":"2026-02-03T10:09:16.814Z","response_time":96,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: 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":["animation","css","haute","horologist","horology","javascript","svg","ticktock","ticktock-js","typescript","watchmaking"],"created_at":"2026-02-03T10:17:06.742Z","updated_at":"2026-02-03T10:17:07.998Z","avatar_url":"https://github.com/yuschick.png","language":"TypeScript","funding_links":["https://github.com/sponsors/yuschick"],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"assets/horologist-repo-image.jpg\" alt=\"Horologist Logo - Making digital time mechanical\" /\u003e\n\u003c/p\u003e\n\nHorologist is a JavaScript library for animating DOM elements to represent time in the same ways as\nmany of the world's greatest haute horologist watchmakers. It supports and enables many of the\ndifferent watchmaking complications and variations such as chronographs, minute repeaters, multiple\ntime zones, perpetual calendars and more.\n\n![Horologist License](https://img.shields.io/github/license/yuschick/horologist?style=for-the-badge)\n![NPM Version](https://img.shields.io/npm/v/horologist?style=for-the-badge)\n\n## Demos\n\nSee the Horologist library in action.\n\n-   [A. Lange \u0026 Söhne - Datograph Perpetual Tourbillon](https://codepen.io/DanielYuschick/pen/gOemjmY)\n-   [A. Lange \u0026 Söhne - Zeitwerk](https://codepen.io/DanielYuschick/pen/yYeRPm)\n-   [F.P. Journe - Tourbillon](https://codepen.io/DanielYuschick/pen/QyoPoq)\n-   [Kari Voutilainen - GMR](https://codepen.io/DanielYuschick/pen/wvmJMEX)\n-   [Speake-Marin - Velsheda](https://codepen.io/DanielYuschick/pen/ZYLdmQ)\n\n## Getting Started\n\nTo get started, first install `horologist` into your project.\n\n```bash\nnpm i horologist\n```\n\n```\nyarn add horologist\n```\n\nWith the package installed, import the main `Watch` class, instantiate it with its settings, and\ncall the `start()` method.\n\n```jsx\nimport { Watch } from 'horologist';\n\nconst settings = {\n    id: \"k0-seasons\",\n    dials: [{ ... }],\n    moonphase: { ... },\n};\n\nconst Sarpaneva = new Watch(settings);\nSarpaneva.start();\n```\n\n## Complications\n\nHorologist aims to recreate the work of haute horology watchmaking in a digital format by emulating\nmany of the handmade complications and variations. View each complication to learn more about it,\nits features and settings API.\n\n| Complication          | Documentation                                                   | Description                                                                                                                       |\n| --------------------- | --------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- |\n| Chronograph           | [Docs](./packages/horologist/src/components/Chronograph/)       | Also referred to as a “stopwatch” function, a chronograph typically uses subdials to keep track of seconds, minutes, and hours.   |\n| Date Indicator        | [Docs](./packages/horologist/src/components/DateIndicator/)     | A date calendar shows the date of the month.                                                                                      |\n| Day Indicator         | [Docs](./packages/horologist/src/components/DayIndicator/)      | A day calendar shows the day of the week.                                                                                         |\n| Day / Night Indicator | [Docs](./packages/horologist/src/components/DayNightIndicator/) | A day/night indicator can be a two-color disc showing day or night through either light and dark coloured segments.               |\n| Dial                  | [Docs](./packages/horologist/src/components/Dial/)              | A dial serves to indicate hours, minutes and seconds.                                                                             |\n| Equation of Time      | [Docs](./packages/horologist/src/components/EquationOfTime/)    | The equation of time is the difference between true solar time and mean time.                                                     |\n| Foudroyante           | [Docs](./packages/horologist/src/components/Foudroyante/)       | A hand that makes one rotation every second, pausing two thru ten times to indicate fractions of a second.                        |\n| Leap Year Indicator   | [Docs](./packages/horologist/src/components/LeapYearIndicator/) | A mechanism to indicate the current year's relationships to the next leap year.                                                   |\n| Minute Repeater       | [Docs](./packages/horologist/src/components/MinuteRepeater/)    | A highly complicated watch function that audibly strikes the time in hours, quarter hours, and/or minutes.                        |\n| Month Indicator       | [Docs](./packages/horologist/src/components/MonthIndicator/)    | A month indicator displays the current month of the year.                                                                         |\n| Moonphase             | [Docs](./packages/horologist/src/components/Moonphase/)         | Displays new moon, first quarter moon, full moon, and last quarter moon by means of a disk that rotates beneath a small aperture. |\n| Power Reserve         | [Docs](./packages/horologist/src/components/PowerReserve/)      | A subdial or gauge used to display how much power remains before the watch stops.                                                 |\n| Watch                 | [Docs](./packages/horologist/src/components/Watch/)             | The root class which controls all complications.                                                                                  |\n| Week Indicator        | [Docs](./packages/horologist/src/components/WeekIndicator/)     | A week calendar displays the current week of the year in either standard or ISO formats.                                          |\n\n## Mentions\n\nThere are a few libraries that allow Horologist to be its best, and they should be acknowledged.\n\n-   [date-fns](https://date-fns.org/)\n-   [lunarphase-js](https://github.com/jasonsturges/lunarphase-js)\n-   [suntimes](https://github.com/doniseferi/suntimes)\n\n## Contact\n\n[@danielyuschick on Bluesky](https://bsky.app/profile/daniel-yuschick.bsky.social)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyuschick%2Fhorologist","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyuschick%2Fhorologist","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyuschick%2Fhorologist/lists"}