{"id":13820153,"url":"https://github.com/polkawallet-io/app","last_synced_at":"2026-01-28T11:20:39.714Z","repository":{"id":37370048,"uuid":"311591114","full_name":"polkawallet-io/app","owner":"polkawallet-io","description":"[Main] Polkawallet app.","archived":false,"fork":false,"pushed_at":"2024-12-26T11:40:48.000Z","size":25966,"stargazers_count":157,"open_issues_count":126,"forks_count":72,"subscribers_count":8,"default_branch":"master","last_synced_at":"2025-05-16T07:40:25.209Z","etag":null,"topics":["flutter","substrate","wallet"],"latest_commit_sha":null,"homepage":"https://polkawallet.io","language":"Dart","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/polkawallet-io.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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":"2020-11-10T08:20:54.000Z","updated_at":"2025-05-12T13:55:36.000Z","dependencies_parsed_at":"2023-12-29T04:28:11.148Z","dependency_job_id":"6c369cbf-1b51-4b53-9974-c11f106d57e0","html_url":"https://github.com/polkawallet-io/app","commit_stats":null,"previous_names":[],"tags_count":47,"template":false,"template_full_name":null,"purl":"pkg:github/polkawallet-io/app","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/polkawallet-io%2Fapp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/polkawallet-io%2Fapp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/polkawallet-io%2Fapp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/polkawallet-io%2Fapp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/polkawallet-io","download_url":"https://codeload.github.com/polkawallet-io/app/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/polkawallet-io%2Fapp/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28845000,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-28T10:53:21.605Z","status":"ssl_error","status_checked_at":"2026-01-28T10:53:20.789Z","response_time":57,"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":["flutter","substrate","wallet"],"created_at":"2024-08-04T08:00:58.943Z","updated_at":"2026-01-28T11:20:39.708Z","avatar_url":"https://github.com/polkawallet-io.png","language":"Dart","funding_links":[],"categories":["Flutter"],"sub_categories":["Flutter Wallet"],"readme":"# Polkawallet App\n\n## Download\n[![Apple Store](https://img.shields.io/badge/Apple%20Store-iOS-Silver?logo=apple)](https://apps.apple.com/us/app/polkawallet/id1520301768)\n[![Google Play](https://img.shields.io/badge/Google%20Play-Android-green?logo=google%20play)](https://play.google.com/store/apps/details?id=io.polkawallet.www.polka_wallet)\n\n----\n\n[![Release](https://img.shields.io/github/v/release/polkawallet-io/app)](https://github.com/polkawallet-io/app/releases)\n[![tag](https://img.shields.io/github/v/tag/polkawallet-io/app)](https://github.com/polkawallet-io/app/tags)\n\nPolkawallet built with Flutter, https://polkawallet.io\n\n![Welcome to Polkawallet](./polkawallet-cover.png)\n\n## Introduction\n\n[Polkawallet](http://polkawallet.io) provide one-stop management for cross-chain assets, convenient staking and governance operations, and the private key is self-owned.\n\nPolkawallet is aiming to provide a more convenient entrance of the polkadot network for all the users of Polkadot/Kusama/Substrate-based-blockchains.\n\n- Friendly UI.\n- Secure local accounts storage.\n- Intuitive Tokens management.\n- Simplified staking \u0026 governance operations.\n- Offline signature supported.\n- Available for both IOS and Android.\n- Support any Substrate-based-blockchain to integrate as plugins.\n\n### Todos\n- [ ] Add proxy account operations.\n- [ ] Support walletConnect protocol.\n\n## Getting Started\n\nDependencies\n - Flutter 2.5.x statble\n - Dart 2.10.x\n\nTo get started\n 1. Clone the repo locally, via git clone https://github.com/polkawallet-io/app.git `\u003coptional local path\u003e`.\n 2. Install the dependencies by running `flutter pub get`.\n 3. In AndroidStudio, run `lib/main.dart` with arguments `--flavor=prod` on Android Devices,\n or just run `lib/main.dart` with no arguments on IOS.\n\n## Contribute\n\nThis app was built with several repos, developers of other substrate based chain\nmay create their own plugin and put it into polkawallet app:\n\n```\n__ polkawallet-io/app\n    |\n    |__ polkawallet-io/ui\n    |    |__ polkawallet-io/sdk\n    |\n    |__ polkawallet_plugin_kusama\n    |    |__ polkawallet-io/sdk\n    |    |__ polkawallet-io/ui\n    |\n    |__ polkawallet_plugin_acala\n    |    |__ polkawallet-io/sdk\n    |    |__ polkawallet-io/ui\n    |\n    |__ polkawallet_plugin_laminar\n    |    |__ polkawallet-io/sdk\n    |    |__ polkawallet-io/ui\n    |\n    |__ \u003cplugin of another substrate based chain\u003e\n    |__ \u003c...\u003e\n```\n\n### 1. polkawallet-io/js_api\nThis is a `polkadot-js/api` wrapper which will be built into a single `main.js` file\nto run in a hidden webView inside the App. So the App will connect to a substrate node\nwith `polkadot-js`.\n\nAnd we wrapped `polkadot-js/keyring` in it, so the App can manage keyPairs.\n\n### 2. polkawallet-io/sdk\nThis is a `polkawallet-io/js_api` wrapper dart package, it contains:\n\n 1. Keyring. Managing keyPairs.\n 2. PolkawalletSDK. Connect to remote node and call `polkadot-js/api` methods.\n 3. PolkawalletPlugin. A base plugin class, defined the data and life-circle methods\n which will be used in the App.\n\nA polkawallet plugin can get users' keyPairs in the App from Keyring instance.\n\nA polkawallet plugin implementation should extend the `PolkawalletPlugin` class and\ndefine it's own data \u0026 life-circle methods.\n\n### 3. polkawallet-io/ui\nThe common used flutter widgets for `polkawallet-io/app`, like:\n - AddressInputForm\n - TxConfirmPage\n - ScanPage\n - ...\n\n### 4. polkawallet-io/polkawallet_plugin_xxx\nExamples:\n 1. [polkawallet-io/polkawallet_plugin_kusama](https://github.com/polkawallet-io/polkawallet_plugin_kusama)\n 2. [polkawallet-io/polkawallet_plugin_acala](https://github.com/polkawallet-io/polkawallet_plugin_acala)\n 3. [polkawallet-io/polkawallet_plugin_laminar](https://github.com/polkawallet-io/polkawallet_plugin_laminar)\n\n### 5. App state management\nWe use [https://pub.dev/packages/mobx](https://pub.dev/packages/mobx).\nso the directories in a plugin looks like this:\n```\n__ lib\n    |__ pages (the UI)\n    |__ store (the MobX store)\n    |__ service (the Actions fired by UI to mutate the store)\n    |__ ...\n```\n\n### 6. Submit your plugin\nWhile your plugin was finished and tested, you may submit an issue in this repo.\nWe will check into your plugin and add it into the App.\n\n### 7. Plugin update\nSubmit a update request issue to update your plugin. There are two different kinds of update:\n 1. Update the dart package. We will rebuild the App and publish a new release.\n 2. Update the js code of your plugin (dart code was not affected). We will rebuild the\n  js bundle file and the app will perform a hot-update through polkawallet-api.\n\n\n### Translation\nPolkawallet App has several translation projects on [crowdin.com](https://crowdin.com/):\n\n - [polkawallet](https://crowdin.com/project/polkawallet)\n - [kusama plugin](https://crowdin.com/project/polkawalletpluginkusama)\n - [acala plugin](https://crowdin.com/project/polkawalletpluginacala)\n\nLanguage files in the project are written in `json-like` style:\n```dart\nfinal enAccount = {\n    'key': 'value',\n    'key.another': 'Another value for translation.',\n    'key.multiline': 'Multiline text are \\n split with symbol \\n.',\n};\n\n/// This 3 strings above will display in the App like:\n// value\n\n// Another value for translation.\n\n// Multiline text are\n// split with symbol\n// .\n```\nYou need to keep the `'key'` field on the left as it is, and translate the `'value'`\nfield on the right only. Note that the `\\n` symbol split a long string into several lines.\n\n### Release checklist\n\n - [ ] sdk version code updated.\n - [ ] sdk jsCodeVersion code updated.\n - [ ] sdk version code of `polkawallet-io/ui` updated.\n - [ ] sdk \u0026 ui dependencies of plugins updated.\n - [ ] plugins version updated.\n - [ ] plugins node list updated.\n - [ ] version code in `pubspec.yaml` updated.\n - [ ] version code in Xcode for IOS updated.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpolkawallet-io%2Fapp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpolkawallet-io%2Fapp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpolkawallet-io%2Fapp/lists"}