{"id":15187691,"url":"https://github.com/gemsgame/react-native-currency-converter","last_synced_at":"2026-02-09T14:33:39.591Z","repository":{"id":226598626,"uuid":"768717309","full_name":"GemsGame/react-native-currency-converter","owner":"GemsGame","description":"React Native currency converter","archived":false,"fork":false,"pushed_at":"2024-03-18T00:10:00.000Z","size":1861,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-07-08T20:48:05.255Z","etag":null,"topics":["currency-conversion","currency-converter","currency-exchange","currency-exchange-rates","currency-rates","react-native","react-native-app","react-native-typescript"],"latest_commit_sha":null,"homepage":"","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/GemsGame.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":"2024-03-07T15:51:52.000Z","updated_at":"2024-03-16T21:55:17.000Z","dependencies_parsed_at":"2024-09-23T15:02:04.705Z","dependency_job_id":"6070e8b7-df0b-458e-b104-a1b3bf185981","html_url":"https://github.com/GemsGame/react-native-currency-converter","commit_stats":{"total_commits":14,"total_committers":1,"mean_commits":14.0,"dds":0.0,"last_synced_commit":"c0f963cf034d17a711108ad47cbac6d6c8f6d2a9"},"previous_names":["gemsgame/currency-converter"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/GemsGame/react-native-currency-converter","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GemsGame%2Freact-native-currency-converter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GemsGame%2Freact-native-currency-converter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GemsGame%2Freact-native-currency-converter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GemsGame%2Freact-native-currency-converter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/GemsGame","download_url":"https://codeload.github.com/GemsGame/react-native-currency-converter/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GemsGame%2Freact-native-currency-converter/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":268370180,"owners_count":24239766,"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-08-02T02:00:12.353Z","response_time":74,"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":["currency-conversion","currency-converter","currency-exchange","currency-exchange-rates","currency-rates","react-native","react-native-app","react-native-typescript"],"created_at":"2024-09-27T18:42:18.676Z","updated_at":"2026-02-09T14:33:39.561Z","avatar_url":"https://github.com/GemsGame.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"![Alt text](image.png)\n##### Requirements:\n1. User Interface:\n* Replicate the provided mockups as closely as possible.\n* Implement a currency selection screen with a searchable list displaying currency codes and\nnames. Highlight the selected currency visually as represented in the design.\n* Create a conversion screen with a field for entering the amount and buttons for selecting\ncurrencies.\n2. Functionality:\n* Integrate the openexchangerates.org API to fetch the latest currency exchange rates.\n* Ensure the currency conversion calculation is accurate and updates as the user types.\n* Store the latest fetched exchange rates locally and allow the app to work offline with the last\nknown rates.\n* Implement a swap function to quickly invert the 'From' and 'To' currencies.\n* Show only available currencies from the API in the currency selection list\n3. Code Quality:\n* Write clean, readable, and maintainable code.\n* Ensure the app is properly typed with TypeScript.\n* Handle API errors gracefully and display user-friendly error messages.\n4. Performance:\n* Optimize the app for performance, especially the currency selection list.\n\n##### Deliverables:\n1. Source code pushed to a Git repository (e.g., GitHub, GitLab).\n2. Documentation on how to run the application locally.\n3. A brief explanation of the app architecture and any third-party libraries used.\n\n##### Evaluation Criteria:\n\n* Adherence to the design mockups and requirements.\n* Code quality, including readability and adherence to TypeScript best practices.\n* App performance and handling of edge cases.\n* Completeness of the implemented features.\n* Any additional features or touches that improve the app's usability or user experience.\n\n### Getting Started\n\n### Step 1: clone and install\n\n```\ngit clone https://github.com/GemsGame/react-native-currency-converter.git\n```\n```\ncd react-native-currency-converter\n```\n```\nnpm install\n```\n### Step 2: Start the App\nLet Metro Bundler run in its own terminal. Open a new terminal from the root of your React Native project. Run the following command to start your Android or iOS app:\n\n```\nnpm run android\n```\n```\nnpm run ios\n```\n\nIf everything is set up correctly, you should see your new app running in your Android Emulator or iOS Simulator shortly provided you have set up your emulator/simulator correctly.\n\nThis is one way to run your app — you can also run it directly from within Android Studio and Xcode respectively.\n\n\n### Explanation about arhitecture\n\nIn the project, I have been using the Flux architecture for state management, which ensures that data flows in a one-way direction. This is the most popular and best practice solution when we are talking about data managment in the web/mob applications on React Native. The important libraries for this are: \n\n* react-redux\n* @reduxjs/toolkit\n\nAlso we need a local database for a data saving and offline mode and synchronization tool. We should provide data updation between a database and temporary local storage. \n\n* @react-native-async-storage/async-storage\n* redux-persist\n\nAs you can see, the app has another dependencies which must be include to our buiild. Witout it we can't to use navigation, screens.\n\n* @react-navigation/native\n* @react-navigation/native-stack\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgemsgame%2Freact-native-currency-converter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgemsgame%2Freact-native-currency-converter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgemsgame%2Freact-native-currency-converter/lists"}