{"id":29057613,"url":"https://github.com/mubelotix/simrepo","last_synced_at":"2025-06-27T06:06:27.507Z","repository":{"id":297519266,"uuid":"992907328","full_name":"Mubelotix/SimRepo","owner":"Mubelotix","description":"Web extension enhancing GitHub by showing similar projects in a repository's sidebar","archived":false,"fork":false,"pushed_at":"2025-06-13T17:11:22.000Z","size":1256,"stargazers_count":5,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-06-13T18:26:22.638Z","etag":null,"topics":["git","github","machine-learning","recommendations","repositories"],"latest_commit_sha":null,"homepage":"https://addons.mozilla.org/en-US/firefox/addon/simrepo/","language":"JavaScript","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/Mubelotix.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,"zenodo":null}},"created_at":"2025-05-29T22:45:07.000Z","updated_at":"2025-06-13T17:11:26.000Z","dependencies_parsed_at":"2025-06-05T23:36:38.646Z","dependency_job_id":null,"html_url":"https://github.com/Mubelotix/SimRepo","commit_stats":null,"previous_names":["mubelotix/simrepo"],"tags_count":0,"template":false,"template_full_name":"fregante/browser-extension-template","purl":"pkg:github/Mubelotix/SimRepo","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mubelotix%2FSimRepo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mubelotix%2FSimRepo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mubelotix%2FSimRepo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mubelotix%2FSimRepo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Mubelotix","download_url":"https://codeload.github.com/Mubelotix/SimRepo/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mubelotix%2FSimRepo/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262202492,"owners_count":23274381,"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":["git","github","machine-learning","recommendations","repositories"],"created_at":"2025-06-27T06:06:22.218Z","updated_at":"2025-06-27T06:06:27.497Z","avatar_url":"https://github.com/Mubelotix.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# SimRepo\n\n[link-rgh]: https://github.com/sindresorhus/refined-github\n[link-ngh]: https://github.com/sindresorhus/notifier-for-github\n[link-hfog]: https://github.com/sindresorhus/hide-files-on-github\n[link-tsconfig]: https://github.com/sindresorhus/tsconfig\n[link-options-sync]: https://github.com/fregante/webext-options-sync\n[link-cws-keys]: https://github.com/fregante/chrome-webstore-upload-keys\n[link-amo-keys]: https://addons.mozilla.org/en-US/developers/addon/api/key\n\n\u003e Enhances GitHub by showing similar projects in a repository's sidebar\n\n![Preview](media/previewer.png)\n\n## Features\n\n- Uses Manifest v3\n- Use npm dependencies thanks to Parcel 2.\n- [Auto-syncing options](#auto-syncing-options).\n- [Auto-publishing](#publishing) with auto-versioning and support for manual releases.\n\n## Installation\n\n\u003ca href=\"https://addons.mozilla.org/en-US/firefox/addon/simrepo/\" target=\"_blank\"\u003e\u003cimg src=\"https://imgur.com/ihXsdDO.png\" width=\"64\" height=\"64\" alt=\"Firefox\"\u003e\u003c/a\u003e\n\u003c!-- \u003ca href=\"https://chrome.google.com/webstore/detail/insa-login-rememberer/alnfaipldfkadlijdfjbkclngnmfokph?hl=fr\u0026authuser=0\" target=\"_blank\"\u003e\u003cimg src=\"https://imgur.com/z8yjLZ2.png\" width=\"64\" height=\"64\" alt=\"Brave\"\u003e\u003c/a\u003e --\u003e\n\u003c!-- \u003ca href=\"https://chrome.google.com/webstore/detail/insa-login-rememberer/alnfaipldfkadlijdfjbkclngnmfokph?hl=fr\u0026authuser=0\" target=\"_blank\"\u003e\u003cimg src=\"https://imgur.com/3C4iKO0.png\" width=\"64\" height=\"64\" alt=\"Chrome\"\u003e\u003c/a\u003e --\u003e\n\u003c!-- \u003ca href=\"https://chrome.google.com/webstore/detail/insa-login-rememberer/alnfaipldfkadlijdfjbkclngnmfokph?hl=fr\u0026authuser=0\" target=\"_blank\"\u003e\u003cimg src=\"https://imgur.com/vMcaXaw.png\" width=\"64\" height=\"64\" alt=\"Edge\"\u003e\u003c/a\u003e --\u003e\n\u003c!-- \u003ca href=\"https://chrome.google.com/webstore/detail/insa-login-rememberer/alnfaipldfkadlijdfjbkclngnmfokph?hl=fr\u0026authuser=0\" target=\"_blank\"\u003e\u003cimg src=\"https://imgur.com/EuDp4vP.png\" width=\"64\" height=\"64\" alt=\"Vivaldi\"\u003e\u003c/a\u003e --\u003e\n\u003c!-- \u003ca href=\"https://chrome.google.com/webstore/detail/insa-login-rememberer/alnfaipldfkadlijdfjbkclngnmfokph?hl=fr\u0026authuser=0\" target=\"_blank\"\u003e\u003cimg src=\"https://imgur.com/nSJ9htU.png\" width=\"64\" height=\"64\" alt=\"Opera\"\u003e\u003c/a\u003e --\u003e\n\u003c!-- \u003ca href=\"https://github.com/Mubelotix/insa-login-rememberer/releases/download/v3/164d1a1b8f5d4b7184ce-3.0.xpi\" target=\"_blank\"\u003e\u003cimg src=\"https://imgur.com/MQYBSrD.png\" width=\"64\" height=\"64\" alt=\"Tor\"\u003e\u003c/a\u003e --\u003e\n\u003c!--\n\u003ca href=\"https://bitwarden.com/download/\" target=\"_blank\"\u003e\u003cimg src=\"https://imgur.com/ENbaWUu.png\" width=\"64\" height=\"64\"\u003e\u003c/a\u003e\n--\u003e\n\n## Technical details\n\nRecommendations are generated by locating the nearest neighbors of a given repository within a vector space, where similar repositories are positioned close to each other. This vector space was built by training an SVC model on a large dataset containing over 300 million GitHub stars. To keep the model up-to-date, the dataset is refreshed incrementally — one-twelfth is updated each month.\n\nMetadata for all supported repositories is packed in [a compressed JSON file](https://github.com/Mubelotix/SimRepo/blob/main/static/repos-json-gz), which is updated monthly.\n\nThe entire dataset is compacted into just 110MB, enabling all recommendation logic to run locally. This ensures fast performance and complete privacy.\n\nAt present, nearest neighbor searches use a simple brute-force method. While this is adequate for the current scale of around 300,000 repositories, future improvements may include more efficient approximate search algorithms such as [Annoy](https://github.com/spotify/annoy).\n\n**Note**: _Because training the full model is computationally expensive, only a smaller version intended for testing is included in this repository and is licensed under GPL-3.0. The full-scale model is not included and remains proprietary._\n\n## Getting started\n\n### Requirements\n\n- Node and npm installed\n- An UNIX-like operating system\n\n### 🛠 Build locally\n\n1. Run `npm install` to install all required dependencies\n2. Run `npm run build`\n\nThe build step will create the `distribution` folder, this folder will contain the generated extension.\n\n### 🏃 Run the extension\n\nUsing [web-ext](https://extensionworkshop.com/documentation/develop/getting-started-with-web-ext/) is recommended for automatic reloading and running in a dedicated browser instance. Alternatively you can load the extension manually (see below).\n\n1. Run `npm run watch` to watch for file changes and build continuously\n2. Run `npm install --global web-ext` (only only for the first time)\n3. In another terminal, run `web-ext run -t chromium`\n4. Check that the extension is loaded by opening the extension options ([in Firefox](media/extension_options_firefox.png) or [in Chrome](media/extension_options_chrome.png)).\n\n#### Manually\n\nYou can also [load the extension manually in Chrome](https://www.smashingmagazine.com/2017/04/browser-extension-edge-chrome-firefox-opera-brave-vivaldi/#google-chrome-opera-vivaldi) or [Firefox](https://www.smashingmagazine.com/2017/04/browser-extension-edge-chrome-firefox-opera-brave-vivaldi/#mozilla-firefox).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmubelotix%2Fsimrepo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmubelotix%2Fsimrepo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmubelotix%2Fsimrepo/lists"}