{"id":19680955,"url":"https://github.com/codewars/kata-clusters","last_synced_at":"2025-02-27T06:40:29.943Z","repository":{"id":43181533,"uuid":"469015697","full_name":"codewars/kata-clusters","owner":"codewars","description":"Visualization of the Codewars kata library","archived":false,"fork":false,"pushed_at":"2022-06-13T19:54:48.000Z","size":4828,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-01-10T05:36:06.432Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://codewars.github.io/kata-clusters/","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/codewars.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}},"created_at":"2022-03-12T07:44:19.000Z","updated_at":"2022-08-23T13:14:10.000Z","dependencies_parsed_at":"2022-08-31T15:01:43.435Z","dependency_job_id":null,"html_url":"https://github.com/codewars/kata-clusters","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codewars%2Fkata-clusters","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codewars%2Fkata-clusters/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codewars%2Fkata-clusters/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codewars%2Fkata-clusters/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/codewars","download_url":"https://codeload.github.com/codewars/kata-clusters/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240990714,"owners_count":19889928,"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":[],"created_at":"2024-11-11T18:06:32.720Z","updated_at":"2025-02-27T06:40:29.921Z","avatar_url":"https://github.com/codewars.png","language":"JavaScript","readme":"# Kata Clusters\n\nVisualization of the Codewars kata library with [D3][d3].\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg width=\"400\" src=\"./screenshot.png\" alt=\"screenshot\"\u003e\n\u003c/div\u003e\n\n## Background\n\nThe Codewars kata library is huge and diverse, but lacks structure. The tags are not defined well and the kata names are not always descriptive. It's challenging to find kata based on a topic, or continue to practice within a domain.\n\nWe'd like to start fixing this with the help from the community.\n\nThe main goal of this project is visualizing the current state of the library to understand the problems. However, it can be useful to explore the library and I'm open to expanding in that direction as well. It should be also motivating to see the progress as we make changes.\n\n## Usage\n\nOpen \u003chttps://codewars.github.io/kata-clusters/\u003e and play with it.\n\nThe blue and slightly larger circles are tags. Other circles are kata colored based on categories (\"Fundamentals\", \"Algorithms\", \"Bugs\", \"Refactoring\", \"Puzzles\").\nHover over a node to see the name.\n\nClick and drag to pan, use the mouse wheel to zoom, or use touch.\n\nClick a tag node to filter the view to only show kata with the tag. Click again, or press Escape, to view all kata again.\n\nClick a kata node to filter the view to only show the kata and its tags. `Ctrl/Cmd + click` to open the kata on Codewars.\n\n## Graph\n\nThe visualization represents the library as a [DAG][dag] with kata and tags as nodes.\n\n```mermaid\ngraph LR\n    K1--\u003eA\n    K1--\u003eB\n    K2--\u003eB\n    K3--\u003eB\n    K3--\u003eC\n```\n\nThe layout is a result of a simulation with [d3-force] using the following forces:\n\n- `link`: The strength of a link to a tag is set to a value inversely proportional to the number of kata connecting to it. Links to uninteresting tags like `Fundamentals` and `Algorithm` are weak because thousans are linked to it.\n- `charge`: Repel each other with strength `10`.\n- `collide`: Avoid collision.\n\nKata with only weak links are pushed out, and kata with similar tags end up close to each other.\n\nThe visualization uses precomputed layout because it's impractical to simulate at runtime for this size. You can experiment with the configuration and regenerate with `npm run precompute`. Note that this can take minutes to finish.\n\n[d3]: https://d3js.org/\n[d3-force]: https://github.com/d3/d3-force\n[dag]: https://en.wikipedia.org/wiki/Directed_acyclic_graph\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodewars%2Fkata-clusters","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcodewars%2Fkata-clusters","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodewars%2Fkata-clusters/lists"}