We are using a pnpm workspace, as installing things via npm will result in broken dependencies.
If you want to know how KodaDot works, go to the DOCS.
Hyper start 🚀
Prerequisites 🎒
node >=18
pnpmCopy and paste these commands to your terminal:
git clone https://github.com/kodadot/nft-gallery.git nft-gallery
cd nft-gallery;
pnpm i;It will clone your project and install all dependencies.
to start the server, run:
pnpm devKodaDot will be available at localhost:9090.
Starting dev server with the pinning functionality 📦
If you want to use the pinning functionality, you must create a .env file in your project root.
echo 'NUXT_ENV_KEYRING=true
PINATA_API_KEY=
PINATA_SECRET_API_KEY=
PINATA_MASTER=' > .envFunctions are located in src-functions/
You can obtain Master Pinata Keys here
you need to install the netlify-cli:
npm install netlify-cli -gto start the server, run:
netlify devApp will start on localhost:9000.
Docker 🐳
If you just want to try out our KodaDot on Kusama and have a complete local set up with a local node, we assume you have docker and docker-compose installed.
First time setup
- Build the docker image
# Make sure you are logged into docker.
docker-compose up --build- To check if the container is up:
docker psFrom next time
Run:
docker-compose upVoila! KodaDot will be available at localhost:9090. KodaDot supports Hot Module Replacement on docker; any changes made will take effect immediately.
Dev hacks (FAQ) 🦇
0. How can I resolve conflict on pnpm-lock.yaml?
CONFLICT (content): Merge conflict in pnpm-lock.yaml
When you see conflict on pnpm-lock.yaml and you are on your pull-request branch, merge upstream branch and run pnpm install, unless you have conflict on package.json, that requires manual resolve.
git fetch --all
git merge origin/main
pnpm install1. How can I read some data from the GraphQL?
Every .graphql file is located in the queries/.
query nftByIdMinimal($id: String!) {
nft: nftEntityById(id: $id) {
id
currentOwner
price
events(limit: 10) {
id
caller
interaction
}
}
}Then we can use it like this:
<script lang="ts" setup>
const { $consola } = useNuxtApp()
const route = useRoute()
const { data: nft } = useGraphql({
queryName: 'nftById',
variables: { id: route.params.id },
})
$consola.log(nft)
</script>2. How can I read on-chain data from the RPC node?
<script lang="ts" setup>
const { $consola } = useNuxtApp()
const { apiInstance } = useApi()
const collectionId = ref('0')
const id = ref('0')
const api = await apiInstance.value
const nft = await api.query.uniques.asset(collectionId, id)
$consola.log(nft)
</script>3. How can I make an on-chain transaction?
<script lang="ts" setup>
async function submit() {
const { accountId } = useAuth()
const { howAboutToExecute, isLoading, status, initTransactionLoader } =
useMetaTransaction()
const executeTransaction = ({ cb, arg, successMessage, errorMessage }) => {
initTransactionLoader()
howAboutToExecute(
accountId.value,
cb,
arg,
() => infoMessage(successMessage || 'Success!'),
() => warningMessage(errorMessage || 'Failed!')
)
}
executeTransaction({
cb: api.tx.system.remark,
arg: ['args']
})
}
</script>4. How can I test Kodadot without spending KSM?
For Basilisk (Rococo): You can obtain some KSM & BSX
You can change the network in the navbar. Currently supported networks are Basilisk, Basilisk-Rococo and Kusama. EVM chains such as MoonBeam and MoonRiver are in read-only mode.
Running local Polkadot and SubSquid nodes
To run the complete local environment, we recommend running a polkadot/Kusama node. In case you are using Apple M1, we have a tutorial for that 🍏
Current Indexers we have/use:
MISC 🏞
Linting code
Show all problems
pnpm lintShow only errors
pnpm lint:quietFix errors
pnpm lint:fixGenerating changelog
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/ /;}'