Skip to content

Commit

Permalink
Products and tooling updates (#528)
Browse files Browse the repository at this point in the history
* Addition of new featured section

* Addition of featured tools section

* Update to the the developer tools page listing all the products and tools

* Addition of the Litmus tool page

* Addition of arch3.rs product page

* Update arch3.rs menu title

* Addition of the relayer exporter product page

* Addition of a product page for the validator exporter

* Update the relayer exporter page with link to the relayer exporter github page

* Remove usage instructions

* Product page for the network registry

* Addition of a Keyring Go product page

* Addition of the crates product page and minor modification to other product page menu titles

* Re-ordered product pages

* Update to product links

* Correct spelling error
  • Loading branch information
emperorjm authored Sep 27, 2024
1 parent 775320d commit 6b07c47
Show file tree
Hide file tree
Showing 32 changed files with 534 additions and 53 deletions.
Binary file added assets/images/tools-products.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
6 changes: 6 additions & 0 deletions components/Home/FeaturedSection.vue
Original file line number Diff line number Diff line change
Expand Up @@ -28,3 +28,9 @@
</div>
</Link>
</template>

<style scoped>
.heading-3 {
font-size: 24px;
}
</style>
10 changes: 9 additions & 1 deletion components/Home/FeaturedSections.vue
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,18 @@
<template>
<div class="grid pb-16 gap-y-4">
<p class="text-base text-gray-600 mb-4 dark:text-gray-900 leading-[150%]">Featured</p>
<div class="grid grid-cols-1 lg:grid-cols-2 gap-x-8 gap-y-4">
<div class="grid grid-cols-1 lg:grid-cols-3 gap-x-8 gap-y-4">
<FeaturedSection title="New to Archway?" description="Community Members" url="/getting-started" label="Get Started">
<img class="w-[115px]" src="@/assets/images/getting-started.png" />
</FeaturedSection>
<FeaturedSection
title="Tools & Products"
description="Dapp Developers"
url="/developers/cosmwasm-documentation/introduction"
label="Explore"
>
<img class="w-[115px]" src="@/assets/images/tools-products.png" />
</FeaturedSection>
<FeaturedSection
title="Learn CosmWasm"
description="Dapp Developers"
Expand Down
73 changes: 73 additions & 0 deletions components/Sections/FeaturedTools.vue
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
<script lang="ts" setup>
import { Link } from '@/components/Ui';
// Tool class definition
class Tool {
constructor(
public title: string,
public path: string,
public description: string,
public label: string,
public image: string // Image path for the tool
) {}
static make(attributes: any) {
return new Tool(
attributes?.title || '',
attributes?.path || '',
attributes?.description || '',
attributes?.label || '',
attributes?.image || ''
);
}
}
// Array of tool objects
const tools = [
new Tool(
'Archway Developer CLI',
'/developers/developer-tools/developer-cli',
'Build, deploy, interact with smart contracts',
'Archway Developer CLI',
'/images/docs/tools/tools-archway-developer-cli.png'
),
new Tool(
'Arch3.js',
'/developers/developer-tools/arch3js/introduction',
'JavaScript library for interacting with the Archway Protocol',
'Arch3.js',
'/images/docs/tools//tools-arch3js.png'
),
new Tool(
'Litmus',
'/developers/developer-tools/litmus',
'Testing framework that facilitates integration and end-to-end testing of CosmWasm smart contracts',
'Litmus',
'/images/docs/tools//tools-litmus.png'
)
];
</script>

<template>
<div class="pt-16">
<h2 class="heading-3 pb-8">Featured Tools</h2>
<div class="space-y-4">
<!-- Loop through each tool in the tools array -->
<div
v-for="tool in tools"
:key="tool.title"
class="flex space-x-3 px-4 py-4 border border-transparent rounded-2xl bg-white dark:bg-black-100 shadow-card dark:shadow-black"
>
<div class="flex-shrink-0 min-w-0">
<img class="w-[64px]" :src="tool.image" :alt="tool.title" />
</div>
<div class="space-y-2 min-w-0">
<Link class="truncate" :href="tool.path">
<h2>{{ tool.title }}</h2>
</Link>
<p class="caption text-gray-600 dark:text-gray-900">{{ tool.description }}</p>
</div>
</div>
</div>
</div>
</template>
130 changes: 130 additions & 0 deletions components/content/AllTools.vue
Original file line number Diff line number Diff line change
@@ -0,0 +1,130 @@
<script lang="ts" setup>
import { Link } from '@/components/Ui';
// Tool class definition
class Tool {
constructor(
public title: string,
public path: string,
public description: string,
public label: string,
public image: string // Image path for the tool
) {}
static make(attributes: any) {
return new Tool(
attributes?.title || '',
attributes?.path || '',
attributes?.description || '',
attributes?.label || '',
attributes?.image || ''
);
}
}
// Array of tool objects
const tools = [
new Tool(
'Archway Developer CLI',
'/developers/developer-tools/developer-cli',
'Build, deploy, interact with smart contracts',
'Archway Developer CLI',
'/images/docs/tools/tools-archway-developer-cli.png'
),
new Tool(
'Arch3.js',
'/developers/developer-tools/arch3js/introduction',
'JavaScript library for interacting with the Archway Protocol',
'Arch3.js',
'/images/docs/tools//tools-arch3js.png'
),
new Tool(
'Litmus',
'/developers/developer-tools/litmus',
'Testing framework that facilitates integration and end-to-end testing of CosmWasm smart contracts',
'Litmus',
'/images/docs/tools//tools-litmus.png'
),
new Tool(
'Archwayd',
'/developers/developer-tools/archwayd',
'The archwayd binary is the core implementation of the Archway protocol',
'Archwayd',
'/images/docs/tools//tools-archwayd.png'
),
new Tool(
'Arch3.rs',
'/developers/developer-tools/arch3rs',
'Rust library for interacting with the Archway Protocol',
'Arch3.rs',
'/images/docs/tools//tools-arch3rs.png'
),
new Tool(
'Relayer Exporter',
'/developers/developer-tools/relayer-exporter',
'Monitor and export key metrics for IBC relayers on the Archway blockchain.',
'Relayer Exporter',
'/images/docs/tools//tools-relayer-exporter.png'
),
new Tool(
'Validator Exporter',
'/developers/developer-tools/validator-exporter',
'Monitoring tool for Archway blockchain validators',
'Validator Exporter',
'/images/docs/tools//tools-validator-exporter.png'
),
new Tool(
'Network Registry',
'/developers/developer-tools/network-registry',
'JavaScript library for interacting with the Archway Protocol',
'Network Registry',
'/images/docs/tools//tools-network-registry.png'
),
new Tool(
'Archway Multisig',
'/developers/guides/multisig/archway-multisig-hub',
'The archwayd binary is the core implementation of the Archway protocol',
'Archway Multisig',
'/images/docs/tools//tools-archway-multisig.png'
),
new Tool(
'Keyring Go',
'/developers/developer-tools/keyring-go',
'Go-based library designed to provide secure storage and handling of cryptographic keys',
'Keyring Go',
'/images/docs/tools//tools-keyring-go.png'
),
new Tool(
'Crates',
'/developers/developer-tools/crates',
'Rust packages that offer reusable code to streamline the development of smart contracts',
'Crates',
'/images/docs/tools//tools-archway-crates.png'
),
];
</script>

<template>
<div class="pt-16">
<div class="space-y-4">
<div class="grid grid-cols-1 lg:grid-cols-2 gap-x-8 gap-y-4">
<!-- Loop through each tool in the tools array -->
<div
v-for="tool in tools"
:key="tool.title"
class="px-4 py-4 border border-transparent rounded-2xl bg-white dark:bg-black-100 shadow-card dark:shadow-black"
>
<div class="flex-shrink-0 min-w-0">
<img class="w-[64px] my-0" :src="tool.image" :alt="tool.title" />
</div>
<div class="">
<Link class="no-underline" :href="tool.path">
<h3>{{ tool.title }}</h3>
</Link>
<p class="caption text-gray-600 dark:text-gray-900">{{ tool.description }}</p>
</div>
</div>
</div>
</div>
</div>
</template>
53 changes: 3 additions & 50 deletions content/2.developers/2.developer-tools/1.introduction.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,56 +6,9 @@ parentSection: Developers
parentSectionPath: /developers
---

## Archway Developer CLI
# Our tools & products

[Archway's Developer CLI](/developers/developer-tools/developer-cli) is the recommended tool to build, deploy, configure, instantiate, query, and interact with smart contracts. You can find the Archway Developer CLI's github repository <a href="https://github.com/archway-network/archway-cli" target="_blank" >here</a>.
The Archway ecosystem provides a comprehensive suite of products and developer tools designed to enhance the experience of building decentralized applications (dapps) on the Archway platform.

There are three core goals of the CLI:

- Speed up development
- Deploy, connect and interact with contracts on Archway
- Encourage security and best practices for developers

## arch3.js

[arch3.js](/developers/developer-tools/arch3js/introduction) is a JavaScript library for interacting with the Archway Protocol. `arch3.js` eliminates the need for working with multiple <a href="https://github.com/cosmos/cosmjs" target="_blank" >CosmJS</a> clients by extending their functionalities while also complementing it with Archway's unique reward system. The Github's repository of **arch3.js** can be found <a href="https://github.com/archway-network/arch3.js" target="_blank" >here</a>.



## Archway Daemon / Archwayd

The **archwayd** binary is the core implementation of the Archway protocol, and you can find its github repository <a href="https://github.com/archway-network/archway" target="_blank" >here<a>. It leverages the <a href="https://github.com/cosmos/cosmos-sdk" target="_blank" >Cosmos SDK</a> and <a href="https://github.com/CosmWasm/cosmwasm" target="_blank" >CosmWasm</a> to reward validators and creators for their contributions to the network. The command-line interface runs a full-node of Archway and provides utilities for chain genesis, account management (keys), validators, nodes, queries and transactions.

::alert{variant="info"}
Since the release of [Archway CLI v2](/developers/developer-tools/developer-cli), **archwayd** is no longer a dependency for the Developer CLI.
#title
Info
::allTools
::


Users familiar with <a href="https://github.com/cosmos/gaia" target="_blank" >Cosmos Hub</a> will recognize the Archway daemon is Archway's version of <a href="https://hub.cosmos.network/main/getting-started/what-is-gaia.html" target="_blank" >Gaiad</a>. It's built using the same Cosmos SDK modules, but introduces a new SDK module called **x/tracking** which monitors gas consumed by applications on the network and distributes developer rewards.

#### Cosmos SDK Modules

- **x/auth**: Accounts and signatures
- **x/bank**: Token transfers
- **x/staking**: Staking logic
- **x/mint**: Inflation logic
- **x/distribution**: Fee distribution logic
- **x/slashing**: Slashing logic
- **x/gov**: Governance logic
- **ibc-go/modules**: Inter-blockchain communication
- **x/params**: Handles app-level parameters

#### Archway SDK Modules

- **x/tracking**: measures gas consumption and rewards developers
- **x/rewards**: calculates and distributes rewards to smart contracts

Go to the [Archwayd CLI Page](./daemon) for a full list of the available commands.

## CosmWasm

CosmWasm is a framework that allows developers to write multi-chain smart contracts using any programming language which compiles to Wasm. It is written as a module that can plug into the Cosmos SDK, making it easy for deploying Cosmos blockchains that utilize Wasm smart contracts.

Disregarding code pertaining to specific chains, CosmWasm contracts deploy and behave interchangeably among blockchains running the <a href="https://github.com/CosmWasm/wasmd" target="_blank" >`wasmd`</a> binary. Archway tooling provides modules for programming Archway smart contracts in Rust, but in future will support Wasm development in both Rust and Golang.
83 changes: 83 additions & 0 deletions content/2.developers/2.developer-tools/10.crates.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
---
objectID: developers_developer-tools_crates
title: Crates
description: Rust packages that offer reusable code to streamline the development of smart contracts on the Archway blockchain
parentSection: Developers
parentSectionPath: /developers
---

# Crates

The Archway team has developed a comprehensive suite of crates to help with building smart contracts on Archway. These crates provide a wide range of features, from metadata support and marketplace capabilities to permissioned access and updatable tokens. Below is an introduction to each crate and its purpose.

---

## 1. cw721-metadata

- **Repository:** [GitHub](https://github.com/archway-network/cw721-metadata)
- **Description:** This crate extends the standard CW721 contract with support for rich metadata. It enables developers to attach and manage additional information, such as artwork or detailed descriptions, to each NFT.
- **Use Case:** Ideal for projects that require enhanced NFT metadata management, such as art collections, gaming assets, or digital certificates.

---

## 2. cw721-marketplace

- **Repository:** [Crates.io](https://crates.io/crates/cw721-marketplace)
- **Description:** A marketplace implementation for trading CW721 NFTs. This crate allows developers to create decentralized marketplaces where users can list, buy, and sell NFTs in a trustless manner.
- **Use Case:** Useful for developers building NFT trading platforms or adding marketplace functionality to existing projects.

---

## 3. cw721-marketplace-utils

- **Repository:** [Crates.io](https://crates.io/crates/cw721-marketplace-utils)
- **Description:** A set of utilities designed to support the CW721 marketplace. This crate provides helpful tools for managing and interacting with the marketplace contract, streamlining the development process.
- **Use Case:** Developers working with CW721 marketplaces can use this crate to simplify interactions with marketplace contracts.

---

## 4. cw721-marketplace-permissioned

- **Repository:** [Crates.io](https://crates.io/crates/cw721-marketplace-permissioned/0.1.6/dependencies)
- **Description:** A permissioned version of the CW721 marketplace, allowing only approved parties to list and trade NFTs. This provides additional control over who can participate in the marketplace, making it suitable for curated or closed ecosystems.
- **Use Case:** Ideal for use cases where marketplace participation needs to be restricted, such as exclusive art galleries or private NFT clubs.

---

## 5. cw721 Single Collection Marketplace

- **Repository:** [Crates.io](https://crates.io/crates/cw721-marketplace-single-collection)
- **Description:** A marketplace focused on a single NFT collection. This crate simplifies the creation of marketplaces tailored for specific collections, making it easier to manage and showcase individual NFT projects.
- **Use Case:** Perfect for developers who want to create a dedicated marketplace for a single NFT collection, offering a streamlined, focused trading experience.

---

## 6. cw721-soulbound

- **Repository:** [Crates.io](https://crates.io/crates/cw721-soulbound)
- **Description:** This crate introduces **soulbound tokens**—NFTs that are permanently tied to a specific wallet address. Soulbound tokens cannot be transferred, making them ideal for use cases like personal achievements, certifications, or digital identity.
- **Use Case:** Ideal for projects that require NFTs that cannot be traded or sold, such as awards or personal milestones.

---

## 7. CW721 Base (Soulbound)
- **Repository:** [Crates.io](https://crates.io/crates/cw721-base-soulbound)
- **Description:** A base contract for implementing **soulbound tokens** within the CW721 framework. This crate provides a foundation for creating non-transferable NFTs, built on top of the standard CW721 contract.
- **Use Case:** Developers building NFT-based applications that require non-transferable tokens for identity, reputation, or achievements.

---

## 8. cw721-updatable

- **Repository:** [Crates.io](https://crates.io/crates/cw721-updatable)
- **Description:** A CW721 extension that allows for updating NFT metadata after the token has been minted. This functionality is useful in cases where the properties of an NFT need to evolve over time, such as in gaming or dynamic art.
- **Use Case:** Suitable for applications requiring NFTs with updatable attributes, such as evolving in-game characters or assets.

---

## 9. CW721 Base (Updatable)

- **Repository:** [Crates.io](https://crates.io/crates/cw721-base-updatable)
- **Description:** A base contract for implementing **updatable NFTs**. This crate extends the standard CW721 functionality to allow for changes in token metadata post-minting.
- **Use Case:** Ideal for developers who need to create NFTs with dynamic or evolving properties, such as in-game items or adaptive art.

2 changes: 1 addition & 1 deletion content/2.developers/2.developer-tools/2.developer-cli.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
objectID: developers_developer-tools_developer-cli
title: Developer CLI
title: Archway Developer CLI
description: An overview of Archway Developer CLI commands, options and usage
parentSection: Developers
parentSectionPath: /developers
Expand Down
Loading

0 comments on commit 6b07c47

Please sign in to comment.