{"id":18081166,"url":"https://github.com/thundergolfer/fast-links","last_synced_at":"2026-04-26T23:31:30.731Z","repository":{"id":73463437,"uuid":"89694227","full_name":"thundergolfer/fast-links","owner":"thundergolfer","description":"Painlessly embed references into your online comments and posts. #FB-Hack2017 :2nd_place_medal:","archived":false,"fork":false,"pushed_at":"2017-09-19T06:37:51.000Z","size":2203,"stargazers_count":3,"open_issues_count":3,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-10-10T15:58:16.153Z","etag":null,"topics":["chrome-extension","information-extraction","productivity","reddit"],"latest_commit_sha":null,"homepage":"","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/thundergolfer.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":"2017-04-28T10:07:31.000Z","updated_at":"2018-03-02T06:47:25.000Z","dependencies_parsed_at":"2023-06-07T01:00:22.116Z","dependency_job_id":null,"html_url":"https://github.com/thundergolfer/fast-links","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/thundergolfer/fast-links","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thundergolfer%2Ffast-links","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thundergolfer%2Ffast-links/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thundergolfer%2Ffast-links/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thundergolfer%2Ffast-links/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thundergolfer","download_url":"https://codeload.github.com/thundergolfer/fast-links/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thundergolfer%2Ffast-links/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32317163,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-26T23:26:28.701Z","status":"ssl_error","status_checked_at":"2026-04-26T23:26:25.802Z","response_time":129,"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":["chrome-extension","information-extraction","productivity","reddit"],"created_at":"2024-10-31T13:13:16.428Z","updated_at":"2026-04-26T23:31:30.712Z","avatar_url":"https://github.com/thundergolfer.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"/images/200_200_logo.png\"\u003e\n\u003c/p\u003e\n\n# Fast Linking - Google Chrome Extension\n\n`Painlessly embed references into your online comments and posts`\n\n-----\n\n### Facebook Hackathon 2017:\n\nThis project was worked on during a 24 hour Facebook regional hackathon and **earned 2nd Place** :2nd_place_medal:. The team consisted of [Avrami](https://github.com/Hammer-Inc), [Apoorv](https://github.com/akan57), [Abdullah](https://github.com/AbdullahShabbir), and [myself](https://github.com/thundergolfer).\n\n\n------\n\n### Idea\n\n - #### Improve social comments on various social platforms such as Facebook or Reddit by decorating user comments with links and citations.\n - #### **510,000** messages sent **per minute**\n - #### **4.75 billion pieces** of contact shared **per day.**##\n\n\n![alt](/images/improved_two.png)\n![alt](/images/improved_one.png)\n\n\n-------\n\n# Development Information\n\n## Features\n\n - Simple [React](https://github.com/facebook/react)/[Redux](https://github.com/rackt/redux) examples of Chrome Extension Window \u0026 Popup \u0026 Inject pages\n - Hot reloading React/Redux (Using [Webpack](https://github.com/webpack/webpack) and [React Transform](https://github.com/gaearon/react-transform))\n - Write code with ES2015+ syntax (Using [Babel](https://github.com/babel/babel))\n - E2E tests of Window \u0026 Popup \u0026 Inject pages (Using [Chrome Driver](https://www.npmjs.com/package/chromedriver), [Selenium Webdriver](https://www.npmjs.com/package/selenium-webdriver))\n\n## Examples\n\nThe example is edited from [Redux](https://github.com/rackt/redux) TodoMVC example.\n\n#### Popup\n\n![Popup](https://cloud.githubusercontent.com/assets/3001525/14128490/dc05e9f8-f653-11e5-9de6-82d1de01844a.gif)\n\nThe `todos` state will be saved to `chrome.storage.local`.\n\n#### Window\n\n![Window](https://cloud.githubusercontent.com/assets/3001525/14128489/da176b62-f653-11e5-9bff-fefc35232358.gif)\n\nThe context menu is created by [chrome/extension/background/contextMenus.js](chrome/extension/background/contextMenus.js).\n\n#### Inject page\n\nThe inject script is being run by [chrome/extension/background/inject.js](chrome/extension/background/inject.js). A simple example will be inject bottom of page(`https://github.com/*`) if you visit.\n\nIf you are receiving the error message `Failed to load resource: net::ERR_INSECURE_RESPONSE`, you need to allow invalid certificates for resources loaded from localhost. You can do this by visiting the following URL: `chrome://flags/#allow-insecure-localhost` and enabling **Allow invalid certificates for resources loaded from localhost**.\n\n## Installation\n\n```bash\n# clone it\n$ git clone https://github.com/jhen0409/react-chrome-extension-boilerplate.git\n\n# Install dependencies\n$ npm install\n```\n\n## Development\n\n* Run script\n```bash\n# build files to './dev'\n# start webpack development server\n$ npm run dev\n```\n* If you're developing Inject page, please allow `https://localhost:3000` connections. (Because `injectpage` injected GitHub (https) pages, so webpack server procotol must be https.)\n* [Load unpacked extensions](https://developer.chrome.com/extensions/getstarted#unpacked) with `./dev` folder.\n\n#### React/Redux hot reload\n\nThis boilerplate uses `Webpack` and `react-transform`, and use `Redux`. You can hot reload by editing related files of Popup \u0026 Window \u0026 Inject page.\n\n#### Using Redux DevTools Extension\n\nYou can use [redux-devtools-extension](https://github.com/zalmoxisus/redux-devtools-extension) on development mode.\n\n### Build\n\n```bash\n# build files to './build'\n$ npm run build\n```\n\n### Compress\n\n```bash\n# compress build folder to {manifest.name}.zip and crx\n$ npm run build\n$ npm run compress -- [options]\n```\n\n#### Options\n\nIf you want to build `crx` file (auto update), please provide options, and add `update.xml` file url in [manifest.json](https://developer.chrome.com/extensions/autoupdate#update_url manifest.json).\n\n* --app-id: your extension id (can be get it when you first release extension)\n* --key: your private key path (default: './key.pem')  \n  you can use `npm run compress-keygen` to generate private key `./key.pem`\n* --codebase: your `crx` file url\n\nSee [autoupdate guide](https://developer.chrome.com/extensions/autoupdate) for more information.\n\n### Test\n\n* `test/app`: React components, Redux actions \u0026 reducers tests\n* `test/e2e`: E2E tests (use [chromedriver](https://www.npmjs.com/package/chromedriver), [selenium-webdriver](https://www.npmjs.com/package/selenium-webdriver))\n\n```bash\n# lint\n$ npm run lint\n# test/app\n$ npm test\n$ npm test -- --watch  # watch files\n# test/e2e\n$ npm run build\n$ npm run test-e2e\n```\n\n### Google Cloud NLP API\n\nInteraction with the GCloud NLP API is handled through the *Node.js Client*. The GCloud project is a `fast-links-extension` project in my GCloud account. [\"Cloud Natural Language API Client\"](https://cloud.google.com/natural-language/docs/reference/libraries) was the article used to get the basics setup.\n\n`app/utils/entity_recognition.js` currently houses the NLP code.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthundergolfer%2Ffast-links","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthundergolfer%2Ffast-links","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthundergolfer%2Ffast-links/lists"}