AI prompts
base on <h1> namada-interface</h1>
<div style="width: 100%; display: flex; justify-content: center; margin-bottom: 32px;">
<img style="width: 300px;" src="banner-image.png" />
</div>
See our `specs` for more detailed documentation in [/specs](https://github.com/anoma/namada-interface/blob/main/specs)
If you would like to contribute, please read [CONTRIBUTING.md](CONTRIBUTING.md) first.
- [Installation](#installation)
- [Ubuntu Linux](#ubuntu)
- [macOS](#macos)
- [Apple Silicon](#apple-silicon)
- [Usage](#usage)
- [Local Chain](#local-chain)
- [Extension](#extension)
- [Interface](#interface)
- [Testing](#testing)
- [Unit](#unit)
- [e2e](#e2e)
## Installation
Before using apps in this repo, we first need to install all dependencies.
### Ubuntu
_NOTE_ These instructions may work with other Ubuntu-based systems, but are only confirmed to work in Ubuntu.
```bash
# Install rustup
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
# Add WASM target
rustup target add wasm32-unknown-unknown
# Install clang
sudo apt-get install -y clang
# Install pkg-config
sudo apt-get install -y pkg-config
# Install openssl development packages
sudo apt-get install -y libssl-dev
# Install protoc
sudo apt-get install -y protobuf-compiler
# Install curl
sudo apt-get install -y curl
# Install npm
sudo apt-get install -y npm
# Install wasm-pack
curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh
# Install yarn and JS dependencies
npm install -g yarn
# within namada-interface/ base folder:
yarn
# Initialize Husky
yarn prepare
```
### macOS
```bash
# Install xcode
xcode-select --install
# Install rustup
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
# Add WASM target
rustup target add wasm32-unknown-unknown
# Install clang
brew install clang
# Install pkg-config
brew install pkg-config
# Install openssl development packages
brew install libssl-dev
# Install protoc
brew install protobuf
# Install wasm-pack
curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh
# Install yarn and JS dependencies
npm install -g yarn
# within namada-interface/ base folder:
yarn
# Initialize Husky
yarn prepare
```
Finally, update your shell environment (e.g., in `~/.zshrc`) to set the following variables:
```
export CC=/usr/local/opt/llvm/bin/clang
AR=/usr/local/opt/llvm/bin/llvm-ar
```
#### Apple Silicon
On macOS, when using Apple Silicon architecture, in order to compile some packages for our wasm dependencies, you will need to install
the following:
```
# Mac M1/M2 only - install brew's version of llvm
brew install llvm
```
Then, in your shell profile (e.g., `~/.zshrc`), export the following environment variables:
```
# Mac M1/M2 only
export LDFLAGS="-L/opt/homebrew/opt/llvm/lib"
export CPPFLAGS="-I/opt/homebrew/opt/llvm/include"
export CC=/opt/homebrew/opt/llvm/bin/clang
export AR=/opt/homebrew/opt/llvm/bin/llvm-ar
```
## Usage
### Local chain
Before you start the extension and interface, you will need at least a chain ID, an RPC URL, and an Indexer URL. This can either be a local chain or an
existing network. If you know the chain ID and URL, you can skip the following and simply enter these values on the app interface.
- To install and run Namada locally, refer to these [instructions](https://docs.namada.net/operators/networks/local-network).
- To run a local indexer, follow these [instructions](https://github.com/anoma/namada-indexer). Ensure that the `TENDERMINT_URL` in your `.env` file points to your local RPC (default is `http://localhost:27657`) or to a public RPC.
### Extension
Within `apps/extension/`, we may issue the following commands:
```bash
# Build wasm dependencies
yarn wasm:build
# Build wasm dependencies with debugging enabled
yarn wasm:build:dev
# Run development extension for Chrome
yarn start:chrome
# Run development extension for Firefox
yarn start:firefox
# Build Chrome extension (production version)
yarn build:chrome
# Build Firefox extension (production version)
yarn build:firefox
```
#### Firefox Add-On Review
See the [FIREFOX_README.md](./apps/extension/FIREFOX_README.md) for specific instructions related to reviewing the Firefox Add-On.
### Interface
Within `apps/namadillo/`, we may issue the following commands:
```bash
# Make sure to build wasm dependencies before starting development server
yarn wasm:build
# Run development interface, hosted at http://localhost:5173
yarn dev
# Build production version
yarn build
```
There are also app-specific instructions in the [namadillo README](apps/namadillo/README.md) and the [extension README](apps/extension/README.md).
### Testing
#### Unit
At the root-level, we can issue commands for all packages in the monorepo. Following is an example:
```bash
# Execute all tests within monorepo
# Running this from the root project directory will run unit tests
# for all packages where a test script is defined
yarn test
# Lint all packages
yarn lint
# Fix linting on all packages
yarn lint:fix
```
### Storybook
Storybook provides a documentation for UI components. Within `/storybook` folder, you can install and run it using the following commands:
```bash
# Install packages
yarn
# Run Storybook interface
yarn storybook
```
To generate a static build, you can run
```bash
yarn storybook-build
```
The generated output will be available at `/storybook/storybook-static` folder.
## Audits
[Least Authority audit - 03.07.2023](audits/LeastAuthority-03-07-2023.pdf)
## License
Unless explicitly stated otherwise all files in this repository are licensed under the Apache License 2.0.
License boilerplate:
```
Copyright Anoma Foundation 2021-2023
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
```
", Assign "at most 3 tags" to the expected json: {"id":"6127","tags":[]} "only from the tags list I provide: [{"id":77,"name":"3d"},{"id":89,"name":"agent"},{"id":17,"name":"ai"},{"id":54,"name":"algorithm"},{"id":24,"name":"api"},{"id":44,"name":"authentication"},{"id":3,"name":"aws"},{"id":27,"name":"backend"},{"id":60,"name":"benchmark"},{"id":72,"name":"best-practices"},{"id":39,"name":"bitcoin"},{"id":37,"name":"blockchain"},{"id":1,"name":"blog"},{"id":45,"name":"bundler"},{"id":58,"name":"cache"},{"id":21,"name":"chat"},{"id":49,"name":"cicd"},{"id":4,"name":"cli"},{"id":64,"name":"cloud-native"},{"id":48,"name":"cms"},{"id":61,"name":"compiler"},{"id":68,"name":"containerization"},{"id":92,"name":"crm"},{"id":34,"name":"data"},{"id":47,"name":"database"},{"id":8,"name":"declarative-gui "},{"id":9,"name":"deploy-tool"},{"id":53,"name":"desktop-app"},{"id":6,"name":"dev-exp-lib"},{"id":59,"name":"dev-tool"},{"id":13,"name":"ecommerce"},{"id":26,"name":"editor"},{"id":66,"name":"emulator"},{"id":62,"name":"filesystem"},{"id":80,"name":"finance"},{"id":15,"name":"firmware"},{"id":73,"name":"for-fun"},{"id":2,"name":"framework"},{"id":11,"name":"frontend"},{"id":22,"name":"game"},{"id":81,"name":"game-engine "},{"id":23,"name":"graphql"},{"id":84,"name":"gui"},{"id":91,"name":"http"},{"id":5,"name":"http-client"},{"id":51,"name":"iac"},{"id":30,"name":"ide"},{"id":78,"name":"iot"},{"id":40,"name":"json"},{"id":83,"name":"julian"},{"id":38,"name":"k8s"},{"id":31,"name":"language"},{"id":10,"name":"learning-resource"},{"id":33,"name":"lib"},{"id":41,"name":"linter"},{"id":28,"name":"lms"},{"id":16,"name":"logging"},{"id":76,"name":"low-code"},{"id":90,"name":"message-queue"},{"id":42,"name":"mobile-app"},{"id":18,"name":"monitoring"},{"id":36,"name":"networking"},{"id":7,"name":"node-version"},{"id":55,"name":"nosql"},{"id":57,"name":"observability"},{"id":46,"name":"orm"},{"id":52,"name":"os"},{"id":14,"name":"parser"},{"id":74,"name":"react"},{"id":82,"name":"real-time"},{"id":56,"name":"robot"},{"id":65,"name":"runtime"},{"id":32,"name":"sdk"},{"id":71,"name":"search"},{"id":63,"name":"secrets"},{"id":25,"name":"security"},{"id":85,"name":"server"},{"id":86,"name":"serverless"},{"id":70,"name":"storage"},{"id":75,"name":"system-design"},{"id":79,"name":"terminal"},{"id":29,"name":"testing"},{"id":12,"name":"ui"},{"id":50,"name":"ux"},{"id":88,"name":"video"},{"id":20,"name":"web-app"},{"id":35,"name":"web-server"},{"id":43,"name":"webassembly"},{"id":69,"name":"workflow"},{"id":87,"name":"yaml"}]" returns me the "expected json"