{"id":16537755,"url":"https://github.com/pablolec/starrylines","last_synced_at":"2025-12-31T01:03:58.229Z","repository":{"id":59365450,"uuid":"534135435","full_name":"PabloLec/StarryLines","owner":"PabloLec","description":":star2: Find the most starred repositories per line of code in the language of your choice :star2: ","archived":false,"fork":false,"pushed_at":"2024-02-14T04:26:32.000Z","size":3108,"stargazers_count":11,"open_issues_count":22,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-02-01T16:01:47.244Z","etag":null,"topics":["awesome","awesome-list","github","kotlin","leaderboard","learn","learning","resource","star","vue","vuejs","website"],"latest_commit_sha":null,"homepage":"https://starrylines.pablolec.dev/","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/PabloLec.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":"2022-09-08T09:13:27.000Z","updated_at":"2024-12-20T15:21:32.000Z","dependencies_parsed_at":"2023-11-11T17:31:14.617Z","dependency_job_id":"34e67a37-bbee-450f-8c04-b46d1237b5e4","html_url":"https://github.com/PabloLec/StarryLines","commit_stats":null,"previous_names":[],"tags_count":15,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PabloLec%2FStarryLines","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PabloLec%2FStarryLines/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PabloLec%2FStarryLines/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PabloLec%2FStarryLines/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/PabloLec","download_url":"https://codeload.github.com/PabloLec/StarryLines/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":238662752,"owners_count":19509664,"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":["awesome","awesome-list","github","kotlin","leaderboard","learn","learning","resource","star","vue","vuejs","website"],"created_at":"2024-10-11T18:43:22.109Z","updated_at":"2025-12-31T01:03:58.219Z","avatar_url":"https://github.com/PabloLec.png","language":"Kotlin","readme":"\u003cdiv align=\"center\"\u003e\n    \u003ch1\u003e:star2: StarryLines :star2:\u003c/h1\u003e\n\u003c/div\u003e\n\n\u003cp align=\"center\"\u003e\n\u003ca href=\"https://github.com/PabloLec/StarryLines/blob/main/LICENSE\" target=\"_blank\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/license/pablolec/StarryLines\" alt=\"License\"\u003e\n\u003c/a\u003e\n\u003ca href=\"https://sonarcloud.io/project/overview?id=PabloLec_StarryLines\" target=\"_blank\"\u003e\n    \u003cimg src=\"https://sonarcloud.io/api/project_badges/measure?project=PabloLec_StarryLines\u0026metric=coverage\" alt=\"Coverage\"\u003e\n\u003c/a\u003e\n\u003ca href=\"https://github.com/PabloLec/StarryLines/actions/workflows/tests.yml\" target=\"_blank\"\u003e\n    \u003cimg src=\"https://github.com/PabloLec/StarryLines/actions/workflows/tests.yml/badge.svg\" alt=\"Tests\"\u003e\n\u003c/a\u003e\n\u003c/p\u003e\n\n---\n\n\u003c!--ts--\u003e\n- [What is it?](#what-is-it)\n      - [What should not be in StarryLines](#what-should-not-be-in-starrylines)\n- [Score calculation](#score-calculation)\n    - [Star count](#star-count)\n    - [Lines of code](#lines-of-code)\n- [Contributing](#contributing)\n- [Technicalities](#technicalities)\n\u003c!--te--\u003e\n\n---\n\n# What is it?\n\nStarryLines retrieves from GitHub the best repositories for each language and then ranks them by the ratio between the number of stars and the number of lines of code.\nThe idea is to find the lines of code that seem to have been proportionally the most interesting for the greatest number of developers. Useful for learning or just for curiosity.\n\n\n#### What should not be in StarryLines\n\nTutorials, cheat sheets, lists, roadmaps and other repositories that are not code or not actual projects.\nSome filters are in place as well as a manual exclusion list. It is possible that there still are irrelevant entries in the tables.\nIf you think you see a repository that doesn't belong, please [open an issue](https://github.com/PabloLec/StarryLines/issues/new?assignees=PabloLec\u0026labels=enhancement\u0026template=repo_removal.md\u0026title=Repository+deletion).\n\n\n# Score calculation\n\nThe score is obtained by dividing the number of stars by the number of lines of code.\nStar count is adjusted and several operations are applied to the code to obtain a relevant number of lines.\n\n### Star count\n\nAlthough the star count displayed in the table is left unchanged, the one taken into account is adjusted. The number of stars is divided by the proportion of code written in the main language.\nFor a repository whose main language is C, composed of 60% C and 40% Python with 100 stars in total, the final star count will be 60.\n\n### Lines of code\n\nThe entire code is parsed and stripped of comments or documentation. The number of lines is calculated by the number of characters divided by 80 for each file.\nThe goal is to obtain a fair result, without penalizing the repositories with the most documentation.\nMoreover, only files written in the main language are retained, others are ignored.\n\n# Contributing\n\nAny contribution is welcome!\nApart from pull requests you can [open an issue](https://github.com/PabloLec/StarryLines/issues/new/choose) to report a bug, report an irrelevant repository, etc.\nFor feature requests, general ideas, or any broader topic, please use the [Discussions section](https://github.com/PabloLec/StarryLines/discussions).\n\n# Technicalities\n\n```mermaid\nsequenceDiagram\nparticipant B as Backend\u003cbr\u003e(Kotlin)\nparticipant D as Database\u003cbr\u003e(MongoDB Atlas)\nparticipant C as Cloudflare Edge\nparticipant F as Frontend\u003cbr\u003e(Vue)\nloop cron\nB--\u003eB: Fetch Github API\nB-\u003e\u003eD: Update main collections\nD-\u003e\u003eB: Get outdated repos\nB--\u003eB: Parse repos lines of code\nB-\u003e\u003eD: Update LoC counts\nD-\u003e\u003eB: Get sorted repos by language\nB--\u003eB: Create top 100\nB-\u003e\u003eD: Update top 100\nend\nD-\u003e\u003eC: Node workers consuming DB\nNote over C: Top lists are stored inside a KV data store\u003cbr\u003eand edge cache for redundancy\nF-\u003e\u003eC: Request top list\nC-\u003e\u003eF: Node worker consume KV\u003cbr\u003eor cache to serve data\n```\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpablolec%2Fstarrylines","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpablolec%2Fstarrylines","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpablolec%2Fstarrylines/lists"}