> ## Documentation Index
> Fetch the complete documentation index at: https://injectivelabs-docs-ai-sdk.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Creating UIs

<Callout icon="info" color="#07C1FF" iconType="regular">
  More comprehensive docs about creating UIs as well as bootstrapping options
  can be found on the [dApps docs](/developers/dapps/).
</Callout>

We've interacted with our contract through the Injective CLI, but this is not ideal for most dApp users. A web UI can provide a much better experience! Rather than sending transaction messages through `injectived`, we can abstract away the complexity and provide the user with two buttons—one to increment the count, and one to reset the count.

![](https://docs.injective.network/img/Counter_website.png)

For example, see the [counter website](https://injective-simple-cosmwasm-sc.netlify.app/). A high level guide on developing the frontend using Vue and the [Injective TS SDK](https://github.com/InjectiveLabs/injective-ts/tree/master/packages/sdk-ts) can be found in the [website repo here](https://github.com/InjectiveLabs/injective-simple-sc-counter-ui/tree/master/nuxt). For a React implementation, see [here](https://github.com/InjectiveLabs/injective-simple-sc-counter-ui/tree/master/next).

Now, interacting with the contract is as simple as clicking a button and signing with MetaMask (make sure the account is set to Ethereum Sepolia Testnet or you will receive a chain ID mismatch error).

![](https://docs.injective.network/img/metamask_select_testnet.png)

<Callout icon="info" color="#07C1FF" iconType="regular">
  You may notice that you get an "Unauthorized" error message when attempting to
  reset the count. This is expected behavior! Recall from the [contract logic
  for
  reset](/developers-cosmwasm/smart-contracts/your-first-smart-contract/#reset)
  that only the contract owner is permitted to reset the count. Since you did
  not instantiate the exact contract that the frontend is interacting with, you
  don't have the required permissions to reset the count.
</Callout>
