{"id":22160587,"url":"https://github.com/rozek/banglejs-2-analog-clock-construction-kit","last_synced_at":"2026-03-19T22:01:51.850Z","repository":{"id":114382874,"uuid":"445829694","full_name":"rozek/banglejs-2-analog-clock-construction-kit","owner":"rozek","description":"a simple \"kit\" to easily construct individual analog clocks for a Bangle.js 2","archived":false,"fork":false,"pushed_at":"2022-03-01T05:42:37.000Z","size":341,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-08-18T05:48:57.851Z","etag":null,"topics":["banglejs"],"latest_commit_sha":null,"homepage":"","language":null,"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/rozek.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"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}},"created_at":"2022-01-08T13:39:41.000Z","updated_at":"2025-08-14T12:31:33.000Z","dependencies_parsed_at":null,"dependency_job_id":"4ca63b28-6d9e-4cea-bd59-7b877eac540e","html_url":"https://github.com/rozek/banglejs-2-analog-clock-construction-kit","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/rozek/banglejs-2-analog-clock-construction-kit","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rozek%2Fbanglejs-2-analog-clock-construction-kit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rozek%2Fbanglejs-2-analog-clock-construction-kit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rozek%2Fbanglejs-2-analog-clock-construction-kit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rozek%2Fbanglejs-2-analog-clock-construction-kit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rozek","download_url":"https://codeload.github.com/rozek/banglejs-2-analog-clock-construction-kit/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rozek%2Fbanglejs-2-analog-clock-construction-kit/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29373837,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-12T08:51:36.827Z","status":"ssl_error","status_checked_at":"2026-02-12T08:51:26.849Z","response_time":55,"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":["banglejs"],"created_at":"2024-12-02T04:08:53.198Z","updated_at":"2026-02-12T17:01:41.298Z","avatar_url":"https://github.com/rozek.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# banglejs-2-analog-clock-construction-kit #\n\na simple \"kit\" to easily construct individual analog clocks for a Bangle.js 2\n\nDeveloping an \"analog clock\" for the [Bangle.js 2](https://www.espruino.com/Bangle.js2) may not be too complicated - but it still requires some knowledge of JavaScript in general and the [Bangle.js environment](https://www.espruino.com/Reference) in particular.\n\nAnd quite often, an existing clock already comes quite close to what one would like to see - wouldn't there be the small missing detail one cannot live without...\n\nThis kit tries to simplify development and customization of such clocks by splitting the implementation into commonly seen parts and providing a framework into which all these parts fit.\n\nAs a consequence, people may easily combine already existing (and tested) parts in order to get the desired clock and - if this approach is not already sufficient - to customize or implement only those parts which cannot yet be found elsewhere.\n\n\u003e Just a small note: if you like this module and plan to use it, consider \"starring\" this repository (you will find the \"Star\" button on the top right of this page), so that I know which of my repositories to take most care of.\n\n## Common Structure of an Analog Clock ##\n\nA minimal example for an analog clock based on the \"analog Clock Const-numberedruction Kit\" looks as follows:\n\n```javascript\nlet Clockwork = require('https://raw.githubusercontent.com/rozek/banglejs-2-simple-clockwork/main/Clockwork.js');\nClockwork.windUp();\n```\n\nand already produces the following clock:\n\n![](minimalExample.png)\n\nNormally, however, a more sophisticated and detailled clock is desired. A more typical structure of an analog clock therefore looks as follows:\n\n```javascript\nlet Clockwork = require('https://raw.githubusercontent.com/rozek/banglejs-2-simple-clockwork/main/Clockwork.js');\n\nClockwork.windUp({\n  size:      null,\n  background:null,\n  face:      require('https://raw.githubusercontent.com/rozek/banglejs-2-twelve-numbered-face/main/ClockFace.js'),\n  hands:     require('https://raw.githubusercontent.com/rozek/banglejs-2-hollow-clock-hands/main/ClockHands.js'),\n  complications:{\n    b:require('https://raw.githubusercontent.com/rozek/banglejs-2-date-complication/main/Complication.js')\n  }\n},{ withDots:true, Seconds:'#FFFF00' });\n```\n\nThis code implements the following clock:\n\n![](simple-clock-example.png)\n\nBasically, the code shown above\n\n* loads a \"clockwork\" (this is responsible for the overall behaviour of a clock)\n* loads any desired feature (e.g., a face with 12 numerals, stylish hollow clock hands and a complication to display the current date\n* configures all these parts and then\n* actually starts the clock by \"winding up\" its clockwork.\n\nAs you can see, quite often no real programming is required - and if something should be missing (or not meet your expectations), only that part of the clock has actually to be developed by yourself.\n\n## Parts of an Analog Clock ##\n\nIn the context of this kit, an analog clock consists of the following parts:\n\n* a **clockwork** (defines the overall behaviour of a clock)\n* a **clock size calculator** (computes the space a clock may occupy without disturbing any widgets)\n* a **clock background** (draws a background for the clock)\n* a **clock face** (draws the clock's face)\n* **clock hands** (actually display the current time by drawing any clock hands)\n* optional **complications** (draw additional complications - e.g., to show the current date) \n\n### Already available Parts ###\n\nRight now, the following clock part implementations are available:\n\n* clockworks:\n    * [simple clockwork](https://github.com/rozek/banglejs-2-simple-clockwork) with up to 6 complications\n* clock size calculations:\n    * [simple clock size calculation](https://github.com/rozek/banglejs-2-simple-clock-size)\n    * [smart clock size calculation](https://github.com/rozek/banglejs-2-smart-clock-size) - should be combined with \"[Widgets on Background](https://github.com/rozek/banglejs-2-widgets-on-background)\"\n* clock backgrounds:\n    * [bitmap background](https://github.com/rozek/banglejs-2-bitmap-clock-background) - should be combined with \"[Widgets on Background](https://github.com/rozek/banglejs-2-widgets-on-background)\"\n* clock faces:\n    * [clock face with numbers 3, 6, 9 and 12](https://github.com/rozek/banglejs-2-four-numbered-clock-face) (opt. with roman numerals)\n    * [clock face with numbers 1...12](https://github.com/rozek/banglejs-2-twelve-numbered-clock-face)\n    * [clock face with numbers 1...12 in \"rainbow\" colors](https://github.com/rozek/banglejs-2-rainbow-clock-face)\n* clock hands:\n    * [simple clock hands](https://github.com/rozek/banglejs-2-simple-clock-hands)\n    * [rounded clock hands](https://github.com/rozek/banglejs-2-rounded-clock-hands)\n    * [hollow clock hands](https://github.com/rozek/banglejs-2-hollow-clock-hands), optionally filled\n* complications:\n    * [complication placeholder](https://github.com/rozek/banglejs-2-complication-placeholder) (for testing purposes)\n    * [date complication](https://github.com/rozek/banglejs-2-date-complication)\n    * [weekday complication](https://github.com/rozek/banglejs-2-weekday-complication)\n    * [calendar week complication](https://github.com/rozek/banglejs-2-calendar-week-complication)\n    * [moon phase complication](https://github.com/rozek/banglejs-2-moon-phase-complication)\n\nAdditionally, there are some modules which may be useful when implementing your own parts:\n\n* [Widgets on Background](https://github.com/rozek/banglejs-2-widgets-on-background) - draws loaded widgets without clearing the widget area\n* [g.drawRoundRect](https://github.com/rozek/banglejs-2-drawroundrect) - draws a (hollow) rectangöe with roudned corners\n* [g.fillRoundRect](https://github.com/rozek/banglejs-2-fillroundrect) - draws a filled rectangöe with roudned corners\n* [g.fillRing](https://github.com/rozek/banglejs-2-fillring) - draws a filled ring\n\n### Clockworks ###\n\n\"Clockworks\" define the overall behaviour of a clock, e.g.\n\n* whether widgets should be shown,\n* whether, how many and where complications may be drawn,\n* when and how often the display should be refreshed\n\n```javascript\nlet Clockwork = require(...);\nClockwork.windUp({\n  size:      \u003copt. clock size calculator\u003e,\n  background:\u003copt. clock background\u003e,\n  face:      \u003copt. clock face\u003e,\n  hands:     \u003copt. clock hands\u003e,\n  complications:{ \u003copt. set of complications and where to place them\u003e }\n},{ \u003csettings\u003e });\n```\n\nThe `complications` setting is an object with the following fields (all of them are optional):\n\n* `tl` - top left corner\n* `t` - top edge\n* `tr` - top right corner\n* `l` - left edge\n* `r` - right edge\n* `bl` - bottom left corner\n* `b` - bottom edge\n* `br` - bottom right corner\n\nJust assign a complication to any of these keys in order to place it at the position that key stands for. Complications assigned to `tl`, `tr`, `l`, `r`, `bl` or `br` will be allocated a small region only, while complications assigned to `t` or `b` may become a bit larger. However, complications in field `t` will prevent complications in fields `tl` and `tr` from being shown. Similarly, if a complication is assigned to field `b`, fields `bl` and `br` will be ignored.\n\nThe following two screenshots illustrate, how the mentioned keys correlate with size and position of a complication:\n\n\u003ctable\u003e\n \u003ctr valign=\"top\"\u003e\n   \u003ctd align=\"center\"\u003e\u003cimg src=\"smallComplications.png\"\u003e\u003cbr\u003esmall complications only\u003c/td\u003e\n   \u003ctd align=\"center\"\u003e\u003cimg src=\"largeComplications.png\"\u003e\u003cbr\u003esmall and large complications\u003c/td\u003e\n \u003c/tr\u003e\n\u003c/table\u003e\n\nThe actually available space for any complication depends on the actual radius of the clock (which itself depends on the clock size calculator used and the visible widgets) and is passed to its drawing function as a value for parameter `Radius`.\n\n### Clock Size Calculators ###\n\n\"Clock Size Calculators\" determine position and radius of an analog clock such that the resulting clock becomes as large as possible even while widgets are being shown.\n\n\u003ctable\u003e\n \u003ctr valign=\"top\"\u003e\n   \u003ctd align=\"center\"\u003e\u003cimg src=\"simpleClockSize.png\"\u003e\u003cbr\u003e\u003ca href=\"https://github.com/rozek/banglejs-2-simple-clock-size\"\u003esimple Clock Size Calculator\u003c/a\u003e\u003c/td\u003e\n   \u003ctd align=\"center\"\u003e\u003cimg src=\"smartClockSize.png\"\u003e\u003cbr\u003e\u003ca href=\"https://github.com/rozek/banglejs-2-smart-clock-size\"\u003esmart Clock Size Calculator\u003c/a\u003e\u003c/td\u003e\n \u003c/tr\u003e\n\u003c/table\u003e\n\nBy default, the [smart clock size calculator](https://github.com/rozek/banglejs-2-smart-clock-size) is used since it often leads to larger clock faces (as illustrated by the screenshots shown above).\n\nIf you prefer a different implementation, just `require` that module and assign it to key `size` of your clockwork options:\n\n```javascript\nlet Clockwork = require(...);\nClockwork.windUp({\n  size: require('...'),\n}});\n```\n\n### Clock Backgrounds ###\n\n\"Clock Backgrounds\" draw a background for the clock (covering the full display, regardless what the \"clock size calculator\" returns for the clock itself).\n\n\u003ctable\u003e\n \u003ctr valign=\"top\"\u003e\n   \u003ctd align=\"center\"\u003e\u003cimg src=\"Background.png\"\u003e\u003cbr\u003e\u003ca href=\"https://github.com/rozek/banglejs-2-bitmap-clock-background\"\u003eBitmap Background\u003c/a\u003e\u003c/td\u003e\n \u003c/tr\u003e\n\u003c/table\u003e\n\nBy default, the clock background is filled either with `Settings.Background` or with the current theme's background color.\n\nIf you prefer a different background, just `require` the module with your preferred background and assign it to key `background` of your clockwork options:\n\n```javascript\nlet Clockwork = require(...);\nClockwork.windUp({\n  background: require('...'),\n}});\n``` \n\n### Clock Faces ###\n\n\"Clock Faces\" draw the face of an analog clock.\n\n\u003ctable\u003e\n \u003ctr valign=\"top\"\u003e\n   \u003ctd align=\"center\"\u003e\u003cimg src=\"fourNumberedClockFace.png\"\u003e\u003cbr\u003e\u003ca href=\"https://github.com/rozek/banglejs-2-four-numbered-clock-face\"\u003efour-numbered Clock Face\u003c/a\u003e\u003c/td\u003e\n   \u003ctd align=\"center\"\u003e\u003cimg src=\"twelveNumberedClockFace.png\"\u003e\u003cbr\u003e\u003ca href=\"https://github.com/rozek/banglejs-2-twelve-numbered-clock-face\"\u003etwelve-numbered Clock Face\u003c/a\u003e\u003c/td\u003e\n   \u003ctd align=\"center\"\u003e\u003cimg src=\"RainbowClockFace.png\"\u003e\u003cbr\u003e\u003ca href=\"https://github.com/rozek/banglejs-2-rainbow-clock-face\"\u003e\"Rainbow\" Clock Face\u003c/a\u003e\u003c/td\u003e\n \u003c/tr\u003e\n\u003c/table\u003e\n\nBy default, no clock face is drawn.\n\nIf you prefer a specific clock face, just `require` the module with your preferred implementation and assign it to key `face` of your clockwork options:\n\n```javascript\nlet Clockwork = require(...);\nClockwork.windUp({\n  face: require('...'),\n}});\n``` \n\n### Clock Hands ###\n\n\"Clock Hands\" actually show the current time by drawing the hands of an analog clock.\n\n\u003ctable\u003e\n \u003ctr valign=\"top\"\u003e\n   \u003ctd align=\"center\"\u003e\u003cimg src=\"simpleClockHands.png\"\u003e\u003cbr\u003e\u003ca href=\"https://github.com/rozek/banglejs-2-simple-clock-hands\"\u003esimple Clock Hands\u003c/a\u003e\u003c/td\u003e\n   \u003ctd align=\"center\"\u003e\u003cimg src=\"roundedClockHands.png\"\u003e\u003cbr\u003e\u003ca href=\"https://github.com/rozek/banglejs-2-rounded-clock-hands\"\u003erounded Clock Hands\u003c/a\u003e\u003c/td\u003e\n   \u003ctd align=\"center\"\u003e\u003cimg src=\"hollowClockHands.png\"\u003e\u003cbr\u003e\u003ca href=\"https://github.com/rozek/banglejs-2-hollow-clock-hands\"\u003ehollow Clock Hands\u003c/a\u003e\u003c/td\u003e\n   \u003ctd align=\"center\"\u003e\u003cimg src=\"hollowClockHands-filled.png\"\u003e\u003cbr\u003e\u003ca href=\"https://github.com/rozek/banglejs-2-hollow-clock-hands\"\u003ehollow Clock Hands (filled)\u003c/a\u003e\u003c/td\u003e\n \u003c/tr\u003e\n\u003c/table\u003e\n\nBy default, [rounded clock hands](https://github.com/rozek/banglejs-2-rounded-clock-hands) are drawn.\n\nIf you prefer different clock hands, just `require` the module with your preferred implementation and assign it to key `hands` of your clockwork options:\n\n```javascript\nlet Clockwork = require(...);\nClockwork.windUp({\n  hands: require('...'),\n}});\n``` \n\n### Complications ###\n\n\"Complications\" are optional tiny displays for additional information such as the current date, the current weekday, moon phases, etc.\n\nThe following screenshot shows a clock with many different complications:\n\n![](manyComplications.png)\n\nAnd here are individual examples for various complications:\n\n\u003ctable\u003e\n \u003ctr valign=\"top\"\u003e\n   \u003ctd align=\"center\"\u003e\u003cimg src=\"Date-Complication.png\"\u003e\u003cbr\u003e\u003ca href=\"https://github.com/rozek/banglejs-2-date-complication\"\u003eDate Complication\u003c/a\u003e\u003c/td\u003e\n   \u003ctd align=\"center\"\u003e\u003cimg src=\"Weekday-Complication.png\"\u003e\u003cbr\u003e\u003ca href=\"https://github.com/rozek/banglejs-2-date-complication\"\u003eWeekday Complication\u003c/a\u003e\u003c/td\u003e\n   \u003ctd align=\"center\"\u003e\u003cimg src=\"Calendarweek-Complication.png\"\u003e\u003cbr\u003e\u003ca href=\"https://github.com/rozek/banglejs-2-date-complication\"\u003eCalendarweek Complication\u003c/a\u003e\u003c/td\u003e\n   \u003ctd align=\"center\"\u003e\u003cimg src=\"Moonphase-Complication.png\"\u003e\u003cbr\u003e\u003ca href=\"https://github.com/rozek/banglejs-2-date-complication\"\u003eMoonphase Complication\u003c/a\u003e\u003c/td\u003e\n \u003c/tr\u003e\n\u003c/table\u003e\n\nBy default, no complications are drawn.\n\nIf you prefer one or multiple complications, just `require` the modules with their implementations and assign them to the key of your clockwork option `complications` which stands for the desired position and size:\n\n```javascript\nlet Clockwork = require(...);\nClockwork.windUp({\n  complications: {\n    l: require(...),\n    r: require(...),\n    b: require(...)\n  },\n}});\n``` \n\nComplications do not necessarily have to be circular - indeed, complications at the top position (`t`) or at the bottom position (`b`) are allowed to be three times as wide as others.\n\n## How to Implement your own Parts ##\n\n### Clockworks ###\n\n\"Clockworks\" define the overall behaviour of a clock, e.g.\n\n* whether widgets should be shown,\n* whether, how many and where complications may be drawn,\n* when and how often the display should be refreshed\n\nThey export the following function:\n\n* `windUp (Options, Settings)` - starts the implemented clock as specified by the given `Options` and configured by the given `Settings`\n\nA template for your own clockwork could therefore look as follows:\n\n```javascript\n(function () {\n  exports.windUp = function windUp (Options, Settings) { ... };\n})();\n```\n\nJust use this template to implement your own clockwork and publish it in a way that Espruino may `require` it. You may also use the [simple Clockwork](https://github.com/rozek/banglejs-2-simple-clockwork) as code base to start from.\n\n### Clock Size Calculators ###\n\n\"Clock Size Calculators\" determine position and radius of an analog clock such that the resulting clock becomes as large as possible even while widgets are being shown.\n\nThey export the following functions:\n\n* `CenterX ()` - returns the optimal x coordinate of the clocks center\n* `CenterY ()` - returns the optimal y coordinate of the clocks center\n* `outerRadius ()` - returns the largest possible clock radius (assuming that `CenterX()` and `CenterY()` are used)\n\nA template for your own calculator could therefore look as follows:\n\n```javascript\n(function () {\n  exports.CenterX = function CenterX () { ... };\n  exports.CenterY = function CenterY () { ... };\n  exports.outerRadius = function outerRadius () { ... };\n})();\n```\n\nJust use this template to implement your own clock size calculator and publish it in a way that Espruino may `require` it. You may also use the [simple Clock Size Calculator](https://github.com/rozek/banglejs-2-simple-clock-size) as code base to start from.\n\n### Clock Backgrounds ###\n\n\"Clock Backgrounds\" draw a background for the clock (covering the full display, regardless what the \"clock size calculator\" returns for the clock itself).\n\nThey export the following function\n\n* `draw (Settings)` - draws the clock background as specified in the `Settings`\n\nA template for your own background could therefore look as follows:\n\n```javascript\n(function () {\n  exports.draw = function draw (Settings) { ... };\n})();\n```\n\nJust use this template to implement your own clock background and publish it in a way that Espruino may `require` it. You may also use the [Bitmap Clock Background](https://github.com/rozek/banglejs-2-bitmap-clock-background) as code base to start from.\n\n### Clock Faces ###\n\n\"Clock Faces\" draw the face of an analog clock.\n\nThey export the following function:\n\n* `draw (Settings, CenterX, CenterY, outerRadius)` - draws a clock face as specified by the given `Settings`, centered at `CenterX`,`CenterY` and (if round) with a radius less or equal to `outerRadius`\n\nA template for your own clock face could therefore look as follows:\n\n```javascript\n(function () {\n  exports.draw = function draw (Settings, CenterX, CenterY, outerRadius) { ... };\n})();\n```\n\nJust use this template to implement your own clock face and publish it in a way that Espruino may `require` it. You may also use the [twelve-numbered Clock Face](https://github.com/rozek/banglejs-2-twelve-numbered-clock-face) as code base to start from.\n\n### Clock Hands ###\n\n\"Clock Hands\" actually show the current time by drawing the hands of an analog clock.\n\nThey export the following function:\n\n* `draw (Settings, CenterX, CenterY, outerRadius, Hours, Minutes, Seconds)` - draws clock hands for the time given by `Hours`, `Minutes` and `Seconds` as specified by the given `Settings`, centered at `CenterX`,`CenterY`, with a radius less or equal to `outerRadius`. `Seconds` are optional and may be missing - in such a case, no second hand should be drawn.\n\nA template for your own clock hands could therefore look as follows:\n\n```javascript\n(function () {\n  exports.draw = function draw (\n    Settings, CenterX, CenterY, outerRadius, Hours, Minutes, Seconds\n  ) { ... };\n})();\n```\n\nJust use this template to implement your own clock hands and publish it in a way that Espruino may `require` it. You may also use the [simple Clock Hands](https://github.com/rozek/banglejs-2-simple-clock-hands) as code base to start from.\n\n### Complications ###\n\n\"Complications\" are optional tiny displays for additional information such as the current date, the current weekday, moon phases, etc.\n\nThey export the following function:\n\n*  `draw (x,y, Radius, Settings)` - draws the complication as specified by the given `Settings`, centered at `x`,`y` and with a radius less than or equal `Radius`\n\nA template for your own complication could therefore look as follows:\n\n```javascript\n(function () {\n  exports.draw = function draw (x,y, Radius, Settings) { ... };\n})();\n```\n\nJust use this template to implement your own complication and publish it in a way that Espruino may `require` it. You may also use the [Date Complication](https://github.com/rozek/banglejs-2-date-complication) as code base to start from.\n\nComplications do not necessarily have to be circular - the given `radius` is just a hint telling the complication how much space it may occupy.\n\nIndeed, complications at the top position (`t`) or at the bottom position (`b`) are allowed to cover a horizontal span from `x-3*Radius` to `x+3*Radius` (and the same vertical span as small complications: `y-Radius`...`y+Radius`)\n\n## License ##\n\n[MIT License](LICENSE.md)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frozek%2Fbanglejs-2-analog-clock-construction-kit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frozek%2Fbanglejs-2-analog-clock-construction-kit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frozek%2Fbanglejs-2-analog-clock-construction-kit/lists"}