{"id":23869194,"url":"https://github.com/extrawest/chrome-extension-training","last_synced_at":"2025-09-07T22:37:57.371Z","repository":{"id":121938716,"uuid":"414587530","full_name":"extrawest/chrome-extension-training","owner":"extrawest","description":null,"archived":false,"fork":false,"pushed_at":"2021-10-07T12:28:03.000Z","size":659,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-30T17:46:37.589Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/extrawest.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2021-10-07T12:13:59.000Z","updated_at":"2021-10-07T12:28:06.000Z","dependencies_parsed_at":null,"dependency_job_id":"aa5cc3d6-4820-4d17-8f66-73a961822ce6","html_url":"https://github.com/extrawest/chrome-extension-training","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/extrawest/chrome-extension-training","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/extrawest%2Fchrome-extension-training","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/extrawest%2Fchrome-extension-training/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/extrawest%2Fchrome-extension-training/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/extrawest%2Fchrome-extension-training/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/extrawest","download_url":"https://codeload.github.com/extrawest/chrome-extension-training/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/extrawest%2Fchrome-extension-training/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274107701,"owners_count":25223451,"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","status":"online","status_checked_at":"2025-09-07T02:00:09.463Z","response_time":67,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":[],"created_at":"2025-01-03T12:16:20.796Z","updated_at":"2025-09-07T22:37:57.363Z","avatar_url":"https://github.com/extrawest.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Chrome extension training: Currency Converter\n\n### Milestones:\n- [Basics](./milestones/basics.md)\n- [Webpack configuration](./milestones/webpack.md)\n- [Options page](./milestones/options.md)\n- [Content and background scripts](./milestones/scripts.md)\n- [Browser actions](./milestones/actions.md)\n\n\n### General use case:\n- Once extension get installed *Options page* is opened programmatically.  \n  The page includes title, short description, dropdown select for the base currency and multiple select for the target currencies.\n  For example, base currency set to UAH and target ones to [USD, EUR].\n- If extension is enabled, when user selects any text on any webpage content script checks whether selected text content includes any numeric value.  \n  Parsing result examples:  \n```javascript\ninput1 = '...before 1928 measured 7.42 in × 3.125 in (188.5 mm × 79.4 mm)...' // 1928\ninput2 = '...measured 7.42 in × 3.125 in (188.5 mm × 79.4 mm)...' // 7.42\ninput3 = '...Today, USD notes are made from cotton fiber paper...' // null\n```\n- If selection includes the numeric value (for example 100), content script appends a button near the selected text.\n- If user clicks outside the button, it disappears.\n- If user clicks the button, extension appends a closable popup with a table near the selected area.\n- As the base currency is UAH, target ones are USD and EUR and selected value is 100, the table should include two rows:\n  - USD - 3.6033\n  - EUR - 2.9711\n- When user clicks browser action (extension icon at the toolbar) it shows a popup with:\n  - a title (extension name)\n  - a button which allows to activate/deactivate the extension for all the webpages\n  - a link to the options page\n  \n\u003eCurrency rates are provided by the [API](https://hovorun.herokuapp.com/).  \n\u003eAs it's free, server falls asleep every hour and initial request may take about 5 seconds.  \n\u003eEvery next request will be executed much faster.\n\n\u003eMocks and images will be mentioned further can be found in **./assets** folder.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fextrawest%2Fchrome-extension-training","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fextrawest%2Fchrome-extension-training","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fextrawest%2Fchrome-extension-training/lists"}