{"id":18583532,"url":"https://github.com/automata-network/apps","last_synced_at":"2025-09-16T18:24:44.778Z","repository":{"id":47167608,"uuid":"334943777","full_name":"automata-network/apps","owner":"automata-network","description":null,"archived":false,"fork":false,"pushed_at":"2021-09-10T09:09:04.000Z","size":94081,"stargazers_count":6,"open_issues_count":0,"forks_count":1,"subscribers_count":9,"default_branch":"develop","last_synced_at":"2025-03-24T21:21:49.225Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://d.ata.network/","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/automata-network.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":"CODEOWNERS","security":null,"support":null}},"created_at":"2021-02-01T12:32:46.000Z","updated_at":"2024-02-29T15:29:56.000Z","dependencies_parsed_at":"2022-09-21T07:52:53.711Z","dependency_job_id":null,"html_url":"https://github.com/automata-network/apps","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/automata-network%2Fapps","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/automata-network%2Fapps/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/automata-network%2Fapps/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/automata-network%2Fapps/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/automata-network","download_url":"https://codeload.github.com/automata-network/apps/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248208689,"owners_count":21065205,"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","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":"2024-11-07T00:23:26.644Z","updated_at":"2025-09-16T18:24:39.675Z","avatar_url":"https://github.com/automata-network.png","language":"TypeScript","readme":"[![polkadotjs](https://img.shields.io/badge/polkadot-js-orange?style=flat-square)](https://polkadot.js.org)\n![license](https://img.shields.io/badge/License-Apache%202.0-blue?logo=apache\u0026style=flat-square)\n[![maintainability](https://img.shields.io/codeclimate/maintainability-percentage/polkadot-js/apps?logo=code-climate\u0026style=flat-square)](https://codeclimate.com/github/polkadot-js/apps)\n\n# @polkadot/apps\n\nA Portal into the Polkadot and Substrate networks. Provides a view and interaction layer from a browser.\n\nThis can be accessed as a hosted application via https://polkadot.js.org/apps/ or you can access the IPFS hosted version via https://polkadot.js.org/apps/ipfs (via hash) or https://dotapps.io (via ipns) to explore any of the supported Polkadot and Substrate chains.\n\nIf you run one or more IPFS node(s), pinning the UI (which only gets updated on releases) will make it faster for you and others. You can find details about that below in the IPFS chapter below.\n\n**Important** If you are a chain developer and would like to add support for your chain to the UI, all the local configuration (API types, settings, logos) can be customized in [the apps-config package](packages/apps-config#README.md), complete with instructions of what goes where.\n\n## overview\n\nThe repo is split into a number of packages, each representing an application. These are -\n\n- [apps](packages/apps/) This is the main entry point. It handles the selection sidebar and routing to the specific application being displayed.\n- [apps-electron](packages/apps-electron/) Desktop app running [apps](packages/apps/).\n- [page-accounts](packages/page-accounts/) A basic account management app.\n- [page-address-book](packages/page-address-book/) A basic address management app.\n- [page-democracy](packages/page-democracy/) A basic voting app, allowing votes on activate proposals and referenda.\n- [page-explorer](packages/page-explorer/) A simple block explorer. It only shows the most recent blocks, updating as they become available.\n- [page-extrinsics](packages/page-extrinsics/) Submission of extrinsics to a node.\n- [page-js](packages/page-js/) An online code editor with [@polkadot-js/api](https://github.com/polkadot-js/api/tree/master/packages/api) access to the currently connected node.\n- [page-settings](packages/page-settings/) A basic settings management app, allowing choice of language, node to connect to, and theme\n- [page-staking](packages/page-staking/) A basic staking management app, allowing staking and nominations.\n- [page-storage](packages/page-storage/) A simple node storage query application. Multiple queries can be queued and updates as new values become available.\n- [page-toolbox](packages/page-toolbox/) Submission of raw data to RPC endpoints and utility hashing functions.\n- [page-transfer](packages/page-transfer/) A basic account management app, allowing transfer of Units/DOTs between accounts.\n\nIn addition the following libraries are also included in the repo. These are to be moved to the [@polkadot/ui](https://github.com/polkadot-js/ui/) repository once it reaches a base level of stability and usability. (At this point with the framework being tested on the apps above, it makes development easier having it close)\n\n- [react-components](packages/react-components/) A reactive (using RxJS) application framework with a number of useful shared components.\n- [react-signer](packages/react-signer/) Signer implementation for apps.\n- [react-query](packages/react-query) Base components that use the RxJS Observable APIs\n\n## Development\n\nContributions are welcome!\n\nTo start off, this repo (along with others in the [@polkadot](https://github.com/polkadot-js/) family) uses yarn workspaces to organize the code. As such, after cloning dependencies _should_ be installed via `yarn`, not via npm, the latter will result in broken dependencies.\n\nTo get started -\n\n1. Clone the repo locally, via `git clone https://github.com/polkadot-js/apps \u003coptional local path\u003e`\n2. Ensure that you have a recent LTS version of Node.js, for development purposes [Node \u003e=10.13.0](https://nodejs.org/en/) is recommended.\n3. Ensure that you have a recent version of Yarn, for development purposes [Yarn \u003e=1.10.1](https://yarnpkg.com/docs/install) is required.\n4. Install the dependencies by running `yarn`\n5. Ready! Now you can launch the UI (assuming you have a local Polkadot Node running), via `yarn run start`\n6. Access the UI via [http://localhost:3000](http://localhost:3000)\n\n## Docker\n\nYou can run a docker container via -\n\n```\ndocker run --rm -it --name polkadot-ui -e WS_URL=ws://someip:9944 -p 80:80 jacogr/polkadot-js-apps:latest\n```\n\nTo build a docker container containing local changes -\n\n```\ndocker build -t jacogr/polkadot-js-apps .\n```\n\nWhen using these Docker commands, you can access the UI via http://localhost:80 (or just http://localhost)\n\n## IPFS\n\nIPFS allows sharing files in a decentralized manner in a similar fashion the polkadot network exchanges blocks. IPFS works best when many nodes seed the same data. Nodes can seed specific data by **pinning** them.\n\nYou can pin with the following command:\n\n```\ncurl -s https://polkadot.js.org/apps/ipfs/pin.json | jq -jr .IpfsHash | xargs -0 -I CID ipfs pin add --progress CID\n```\n\nHere is a script you can save as `/usr/local/bin/polkadotjs-ipfs-pin.sh`:\n\n```\n#!/usr/bin/env bash\n\nIPFS='/usr/local/bin/ipfs'\ncurl -s https://polkadot.js.org/apps/ipfs/pin.json | jq -jr .IpfsHash | xargs -0 -I CID $IPFS pin add --progress CID\n```\n\nI suggest to run the script once. The output should be similar to (the CID/Hash will very likely be different though):\n```\n$ /usr/local/bin/polkadotjs-ipfs-pin.sh\npinned QmNYAbzaE8kRAf68YiN3ZuUxgdwroeav3JhicsHsG5b2oW recursively\n```\n\nNow that you know the CID (hash), you can check whether the data is already pinned or not:\n```\n$ ipfs pin ls | grep QmNYAbzaE8kRAf68YiN3ZuUxgdwroeav3JhicsHsG5b2oW\nQmNYAbzaE8kRAf68YiN3ZuUxgdwroeav3JhicsHsG5b2oW recursive\n```\n\nNow that we know it works, we can automate that with a cron task. Run `crontab -e`.\nIf you see only comments, append the following to the file and save:\n```\nSHELL=/bin/bash\nHOME=/\n0 * * * * /usr/local/bin/polkadotjs-ipfs-pin.sh \u003e/dev/null 2\u003e\u00261\n```\n\nNow our script will run every hours at minute '0' (8:00, 9:00, etc...). To check, we can unpin temporarily:\n```\n$ ipfs pin rm QmNYAbzaE8kRAf68YiN3ZuUxgdwroeav3JhicsHsG5b2oW\nunpinned QmNYAbzaE8kRAf68YiN3ZuUxgdwroeav3JhicsHsG5b2oW\n```\n\nNow asking for the CID confirms that is it not there.\n```\n$ ipfs pin ls QmNYAbzaE8kRAf68YiN3ZuUxgdwroeav3JhicsHsG5b2oW\nError: path 'QmNYAbzaE8kRAf68YiN3ZuUxgdwroeav3JhicsHsG5b2oW' is not pinned\n```\n\nWait until the your cron task runs and try again:\n```\n$ ipfs pin ls QmNYAbzaE8kRAf68YiN3ZuUxgdwroeav3JhicsHsG5b2oW\nQmNYAbzaE8kRAf68YiN3ZuUxgdwroeav3JhicsHsG5b2oW recursive\n```\n\nTada! This is now automatic and you may forget it.\n\nIf you are curious and want to know how many people seed the UI on IPFS, here is the magic command (it may take a while to return the answer as ipfs will search for about 1 minute):\n```\nipfs dht findprovs QmTejwB7mJPBHBoqubjzHSgSxfLMcjnZA3LFefqoQc87VJ | wc -l\n```\n\nIf you are current about the content of what you just pinned, you may use the following command:\n```\n$ ipfs ls QmTejwB7mJPBHBoqubjzHSgSxfLMcjnZA3LFefqoQc87VJ\nQmPJGyqVCcXm238noz7TZDByyGa35qqc8g6sfyXF3KDXZ3 38078   favicon.ico\nQmdouVsVE9rMVB84Cy1ehVi1LAGW1fKcqqQxSEjgxJrv7H 668     index.html\nQmWHcGf1JCFZCYjZsw52vM5RiJVbcNpX1fo2NyoBKBvtuf -       ipfs/\nQmT6NwDsJzMyBs6bMq845nMumeJWbixBfNXA9hdAhAMdSG -       locales/\nQmcgiZpwvpT1E1dkSS3zr5je89rZRVocNKPebgWhn3JVTC 2178582 main.ce05dfca.js\nQmdnEtuhFDyw5Tjr82bFPzyveFrbkYjJAnUvBvzwT18YGG 337     manifest.json\nQmW7gDKHbmtD7sRTqsvyo84bDpyYPZR3w1wQo8pme2q5HC -       next/\nQmd8UnRQiBobm4qb6dhiC1HoQ7SvwZrWJenoN3JPEV3iiF 480594  polkadotjs.3af757ad.js\nQmUfXPMfNys8Y8dekuankBx7BHiSAjALCpBDKH6F5DdcNm 628284  react.0cecb00d.css\nQmSEgXdQbC1ek9Td1mHy3BRvJpfWHm9zQYegTgAUj1QC4g 924156  react.8f083b49.js\nQmfGBgFe2aqf83Wv21m9k5DH2ew89CDj4tydoxJWdK6NNL 1552    runtime.3d77e510.js\nQmYPa8jcHH7gfopMALr5XTW4i1QM2xgVBe3NeP11y3tErA -       static/\nQmeYBC5EgbccC8NEwXC2rvbd93YiHtTM5xYzqCDohXerDf 859984  vendor.8b793a81.js\n```\n\n## Desktop App\n\nThe main advantage of using Desktop App is that it by default stores encrypted accounts on the filesystem instead of browser's local storage.\nLocal storage is susceptible to attacks using XSS (Cross-Site Scripting). There's no such risk when with files stored on disk.\n\nThe desktop app uses the [Electron](https://www.electronjs.org/) framework. It provides the same features as web app, the only difference\nbeing different account storage.\n\nThe accounts are stored in the following directories:\n* Mac: `~/Library/Application Support/polkadot-apps/polkadot-accounts`\n* Linux: `~/.config/polkadot-apps/polkadot-accounts` (or `$XDG_CONFIG_HOME/polkadot-apps/polkadot-accounts` if `$XDG_CONFIG_HOME` is defined)\n* Windows: `%APPDATA%\\polkadot-apps\\polkadot-accounts`\n\nFor more details on the desktop app, head over to [Electron package README](https://github.com/polkadot-js/apps/blob/master/packages/apps-electron/README.md).\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fautomata-network%2Fapps","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fautomata-network%2Fapps","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fautomata-network%2Fapps/lists"}