- KodaDot 2.0 -- Beta
- We've organized first Dotsama meetup in Lisbon thanks to KodaDot
- Mass Airdrop and what we've learned
- Introducing Series Insights
- JPEG summer is over. It's over, right?
- Hello Kusummer
- Client-first NFT gallery: Technical examination
- How to Embed your NFT on Kusama through KodaDot
- Traverse to the prime show
- The First Multilingual NFT Gallery in Polkadot ecosystem running live on Kusama
- Read our story, how we started.
Contribution is welcome! and well rewarded in $KSM!
We are using yarn
workspace, as installing things via npm will result in broken dependencies.
Thanks goes to these wonderful people (emoji key):
Made with contributors-img.
git clone git@github.com:kodadot/nft-gallery.git
yarn
yarn dev
open http://localhost:9090/
Sure, your contribution is welcome. Please follow code of conduct and contribution guidelines
If you feel awesome and want to support us in a small way, please consider starring and sharing the repo! This helps us getting known and grow the community. π
We have list of frequent participants in our codebase. You can send them $KSM, native currency we use to payout bounties for Pull Requests and coordinating issues.
- Want to be on this list? Become frequent participant by contributing more, come with us!
- You can learn about our Contributors base
If you just want to try out our KodaDot on Kusama and have a full local setup with a local node, we assume you have docker and docker-compose installed.
Run Kodadot locally
docker-compose up -d --build
Build docker image of KodaDot
docker build . -t kodadot-app
Check if container is up
docker ps
Run it locally and then visit localhost:9090
docker run -p 9090:9090 --name kodadot kodadot-app
Someone clean it pls, bounty for devops kodadot#1635
docker build -t nuxtapp .
docker run -it -p 0.0.0.0:9090:9090 nuxtapp
then go to the http://0.0.0.0:9090
In order to execute some transaction you can use exec
located in src/utils/transactionExecutor.ts
Usage:
import exec from '@/utils/transactionExecutor';
// arguments: from which account, password for account, which action, array of parameters
this.tx = await exec(this.account, this.password, api.tx.democracy.vote, [referendumId, { aye, conviction }]);
Some of the properties on the component needs to be automatically updated (currentBlock)
Usage:
<template>
<div>{{ currentBlock }}</div>
</template>
<script lang="ts">
// Skipping imports
export default class Summary extends Vue {
private currentBlock: any = {};
private subs: any[] = [];
public async mounted() {
this.subs.push(await api.derive.chain.bestNumber(value => this.currentBlock = value));
}
// Unsubscribe before destroying component
public beforeDestroy() {
this.subs.forEach((sub) => sub());
}
}
</script>
Here is a quick setup guide for the project.
git clone https://github.com/kodadot/nft-gallery.git
touch .env
in .env
add following properties:
NUXT_ENV_KEYRING=true
PINATA_API_KEY=
PINATA_SECRET_API_KEY=
PINATA_MASTER=
SUBSQUID_ENDPOINT=https://app.gc.subsquid.io/beta/rubick/004/graphql
You can obtain some Westend (WND)
To change the network go to the /settings
and change the prefix.
Currently supported networks are kusama, westend, statemine, westmint
.
Wanna add more networks? Open an PR on vue-settings
npm install -g netlify-cli
yarn
netlify dev
The whole stack will be running on localhost:9000
. app is running on localhost:9090
.
To run the full local environment we recommend you to run a polkadot/Kusama node. In case you are using Apple M1, we have a tutorial for that π
To run also a subquery indexing node please check this repo
yarn lint
yarn lint --quiet
yarn lint --fix
In order to execute some transaction you can use exec
located in src/utils/transactionExecutor.ts
Usage:
import exec from '@/utils/transactionExecutor';
// arguments: from which account, password for account, which action, array of parameters
this.tx = await exec(this.account, this.password, api.tx.democracy.vote, [referendumId, { aye, conviction }]);
Some of the properties on the component needs to be automatically updated (currentBlock)
Usage:
<template>
<div>{{ currentBlock }}</div>
</template>
<script lang="ts">
// Skipping imports
export default class Summary extends Vue {
private currentBlock: any = {};
private subs: any[] = [];
public async mounted() {
this.subs.push(await api.derive.chain.bestNumber(value => this.currentBlock = value));
}
// Unsubscribe before destroying component
public beforeDestroy() {
this.subs.forEach((sub) => sub());
}
}
</script>
To generate changelog use github cli
List only merged, if you need limit use -L
gh pr list -s merged --json mergedAt,baseRefName,number,title,headRefName -B main -L 37 | jq -r '.[] | .number, .title' | sed '/^[0-9]/{N; s/\n/ /;}'
Love PermaFrost π