{"id":29682062,"url":"https://github.com/cloudmosa/cloudphone-currency","last_synced_at":"2026-05-16T13:02:34.370Z","repository":{"id":305725503,"uuid":"1023755915","full_name":"cloudmosa/cloudphone-currency","owner":"cloudmosa","description":"Currency converter app for Cloud Phone","archived":false,"fork":false,"pushed_at":"2025-07-21T17:03:10.000Z","size":60,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-07-21T18:49:36.881Z","etag":null,"topics":["currency-converter","javascript","typescript"],"latest_commit_sha":null,"homepage":"https://developer.cloudfone.com/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cloudmosa.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-07-21T16:37:17.000Z","updated_at":"2025-07-21T17:03:14.000Z","dependencies_parsed_at":"2025-07-21T18:49:41.278Z","dependency_job_id":"09cbd39d-4f93-4de6-8215-2c00bca427df","html_url":"https://github.com/cloudmosa/cloudphone-currency","commit_stats":null,"previous_names":["cloudmosa/cloudphone-currency"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/cloudmosa/cloudphone-currency","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudmosa%2Fcloudphone-currency","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudmosa%2Fcloudphone-currency/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudmosa%2Fcloudphone-currency/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudmosa%2Fcloudphone-currency/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cloudmosa","download_url":"https://codeload.github.com/cloudmosa/cloudphone-currency/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudmosa%2Fcloudphone-currency/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266604009,"owners_count":23954725,"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-07-23T02:00:09.312Z","response_time":66,"last_error":null,"robots_txt_status":null,"robots_txt_updated_at":null,"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":["currency-converter","javascript","typescript"],"created_at":"2025-07-23T02:07:14.586Z","updated_at":"2026-05-16T13:02:34.365Z","avatar_url":"https://github.com/cloudmosa.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# [Cloud Phone](https://www.cloudfone.com/) Currency Converter\n\n\u003cimg src=\"icon.png\" alt=\"Currency Converter Icon\" width=\"128\" style=\"float:left;margin-inline-end: 1em\" draggable=\"false\" /\u003e\n\nA simple currency converter for [Cloud Phone](https://developer.cloudphone.tech), a remote web browser and app store for 4G feture phones.\n\n:beginner: Available at [cloudmosa.github.io/cloudphone-currency/](https://cloudmosa.github.io/cloudphone-currency/)\n\n:page_facing_up: Learn more at [Cloud Phone for Developers](https://developer.cloudphone.tech)\n\nThis app is written in Vanilla JS and does not use a frontend framework like React or Svelte. There are no runtime dependencies. Since Cloud Phone uses a modern Chromium engine, there is no transpilation to support older browsers.\n\n## Features\n\nThis app was designed to be as simple as possible to use, while illustrating what you can build on Cloud Phone. Several important features make this possible:\n\n- Converts currencies live as you type\n- ~~Default currency prediction~~\n- Remembers and stores currency selection in `localStorage`\n- Rounds to commonly available denominations\n- Displays currency symbols, codes, and country flags\n\n## Exchange Rate Data\n\nCurrency conversion rates are sourced from [`fawazahmed0/currency-api`](https://github.com/fawazahmed0/exchange-api/), hosted on CDNs including JSDelivr and Cloudflare Pages. The latest exchange rates are used with USD as a base currency.\n\n### Other Data\n\nThe following data set was generated by ChatGPT:\n\n* [`src/data/currencies.json`](src/data/currencies.json) - a list of currency information including codes, names, symbols, and denominations.\n\n## :wrench: Components\n\nThis app is designed to be as simple as possible, and to work on both QVGA (240x320) and QQVGA (160x128) screens by users predominantly in South Asia. It includes several components:\n\n* [`src/components/header.ts`](src/header.ts) - a header displaying a title\n* [`src/components/softkeys.ts`](src/softkeys.ts) - a navigation bar fixed at the bottom of the screen with three actions: left, right, and center\n* [`src/components/currencyInput.ts`](src/currencyInput.ts) - a partially AI-generated Web Component to simplify typing currencies on T9 Cloud Phone devices\n* [`src/components/currencyList.ts`](src/currencyList.ts) - a list for selecting currencies\n\n## Cloud Phone Details\n\nThis app mainly uses web standards and works outside of Cloud Phone, but requires one feature specific to Cloud Phone.\n\n### `x-puffin-entersfullscreen`\n\nThe `x-puffin-entersfullscreen=\"off\"` attribute is set in [`src/currencyInput.ts`](src/currencyInput.ts). By default, pressing `Enter` on an `\u003cinput\u003e` element in Cloud Phone will open a native UI for text entry. The native UI is helpful for T9 predictive text and autocorrect, but its unnecessary for basic numeric input. Instead, the app directly intercepts the `keydown` event, moves the cursor using arrow keys, and renders the number as a formatted currency.\n\n## Commands\n\nThis app uses `rsbuild` to compile and bundle, and `terser` to minify, the application into a single JavaScript file.\n\nWatch, build, and serve on a local server\n\n```bash\nnpm run-script dev\n```\n\nBuild\n\n```bash\nnpm run-script build\n```\n\n## :notebook: Prerequisites\n\n* [Node \u0026 npm](https://nodejs.org/en/download/)\n* [Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git)\n* A [GitHub](https://github.com/signup) account :octocat:\n\n## :rocket: Deploy to GitHub Pages\n\n[GitHub Pages](https://pages.github.com/) provides free hosting for public open-source repositories. This project uses the official [deploy-pages](https://github.com/actions/deploy-pages) GitHub Action to build and deploy static HTML, CSS, and JS.\n\n## :sunglasses: Developer Program\n\nTo publish your app on Cloud Phone, join the [Cloud Phone Developer Program](https://www.cloudfone.com/developer-program).\n\n## :free: License\n\nLicensed under the [Apache 2.0](./LICENSE) license\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcloudmosa%2Fcloudphone-currency","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcloudmosa%2Fcloudphone-currency","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcloudmosa%2Fcloudphone-currency/lists"}