Skip to content

irnb/web3-wall

Repository files navigation

FarmWall

Apps and Packages

  • contract: containing smart contract
  • web: Next.js app
  • @repo/eslint-config: eslint configurations (includes eslint-config-next and eslint-config-prettier)
  • @repo/typescript-config: tsconfig.jsons used throughout the monorepo

1- Smart Contract

System Design

WallNFT is a public decentralized platform implemented as a smart contract, that allows users to post messages on a "Wall". Each message is minted as a non-fungible token (NFT) based on the ERC721 standard. This approach not only ensures the uniqueness and ownership of each message, but also empowers the users with a measurable reputation in the form of NFT balances.

The platform incorporates a feature of "Pinning" a message. Users with sufficient reputation (NFT balance) or those willing to pay a fee can pin a message, making it more prominent. The platform also integrates with an AI engine. Each time a user creates a post, the AI engine generates an image for the post, which is then used as the art for the associated NFT.

Deployment

this is a foundry project, so you can deploy it using the foundry cli:

forge create `contract_path:contract_name` --template --rpc-url `rpc_url` --private-key `private_key`

Usage

  • Using website (WIP)
  • Using CLI (client/cli/main.ts)

dev environment

(you need install foundry first)

cd contract

# this will start a local chain (anvil)
make node

# in another terminal
# this will install contract dependencies, compile, test and deploy the contract with constructor arguments in the `./args` file
make dev

You can also run the project from the root (you need to install pnpm first)

pnpm install
turbo make:node
# in another terminal
turbo make:dev

High level System Design

System Design

Contract Doc

2- Frontend

Next.js ./apps/web application with TypeScript, Shadcn-UI, and WAGMI.

Utilities

Environment variables

Copy environment variable examples, create .env and .env.local files, and replace values.

Build

1- turbo build
2- turbo start

Develop

turbo dev

Releases

No releases published

Packages

No packages published