diff --git a/README.md b/README.md index bcc66d0..928b452 100644 --- a/README.md +++ b/README.md @@ -15,6 +15,7 @@ - [Node (>= v18.17)](https://nodejs.org/en/download/package-manager) - Yarn ([v1](https://classic.yarnpkg.com/en/docs/install/#windows-stable) or [v2+](https://yarnpkg.com/getting-started/install)) - [Git](https://git-scm.com/downloads) +- [Foundry](https://book.getfoundry.sh/getting-started/installation) ## Quickstart @@ -34,17 +35,19 @@ yarn install yarn chain ``` -This command starts a local Ethereum network using Foundry. The network runs on your local machine and can be used for testing and development. +This command starts a local Ethereum network using Foundry. The network runs on your local machine and can be used for testing and development. -3. Open a second terminal, navigate to `Technai-foundry` and run this command to deploy the test contract: +3. Duplicate and rename `packages/foundry/.env.example` to `packages/foundry/.env` (you don't need to fill it out until deploying to a live network) + +4. Open a second terminal, navigate to `Technai-foundry` and run this command to deploy the test contract: ``` yarn deploy ``` -This command deploys a test smart contract to the local network. The contract is located in `packages/hardhat/contracts` and can be modified to suit your needs. The `yarn deploy` command uses the deploy script located in `packages/hardhat/deploy` to deploy the contract to the network. You can also customize the deploy script. +This command deploys a test smart contract to the local network. The contract is located in `packages/foundry/contracts` and can be modified to suit your needs. The `yarn deploy` command uses the deploy script located in `packages/foundry/script/Deploy.s.sol` to deploy the contract to the network. You can also customize the deploy script. -4. Open a third terminal, navigate to `Technai-foundry` and run this command to start your NextJS app: +5. Open a third terminal, navigate to `Technai-foundry` and run this command to start your NextJS app: ``` yarn start @@ -61,56 +64,58 @@ Visit your app on: `http://localhost:3000`. You can interact with your smart con # Roadmap -## Phase 1 - -- Project started on [Aleph Hackathon](https://www.aleph.crecimiento.build/es-aleph-hackathon) -- This repo was started with `npx create-eth@latest` with Foundry and integrated with the contracts and frontend from [github.com/luloxi/technai-marketplace](https://github.com/luloxi/technai-marketplace) +- To see detailed development info, [see here](https://lulox.notion.site/TECHNAI-3458ad216e8c40a9b4489fe026146552?pvs=74) -- To see current development info, [see here](https://lulox.notion.site/TECHNAI-3458ad216e8c40a9b4489fe026146552?pvs=74) +## Phase 1 ### Simple Mint -- ✅ **Simple minting function** for artists to upload their metadata to IPFS and sign a EIP 712 message, and then wait for an investor (first minter) to pay for the contract creation transaction. - ✅ **Add music to NFTs metadata** and **integrate with frontend** (Reference: [OpenSea metadata-standards](https://docs.opensea.io/docs/metadata-standards)) - ✅ **Create a contract for SimpleMint and SimpleMintNFT** - ✅ **Page for minting** that takes inputs for the metadata of the NFT (Reference: [scaffold-class](https://github.com/luloxi/scaffold-class)) - ✅ **Display NFT being built as a preview** before minting (display the NFT and the metadata) - ✅ **Add an option to start a collection paying gas** on the Simple Mint page, with a toggle to switch between gasless and paying gas - ✅ **Allow setting max tokenId and price** -- **Implement a database to store the signatures** that allows first minters to start a collection (Reference: [grants.buidlguidl.com](https://github.com/BuidlGuidl/grants.buidlguidl.com)) -- **Add a page for first minters** reading from the database with NFTs available to complete the Simple Mint process ### Marketplace - ✅ **Page for interacting with the marketplace** buy and sell functions (Reference: [Simple Marketplace w/ Royalties)](https://app.buidlguidl.com/build/UxFNxy5XIMzz9mHKUxy5)) -- ✅ **Payment in native gas token** and USDC token +- ✅ Payment in native gas token **and USDC token** - ✅ **Display Simple Minted NFTs in the marketplace** -- **Mixed pay** that allows paying in USDC or native gas token for the same amount of USD, and/or maybe crosschain payments with USDC CCTP or Chainlink CCIP (integrate Chainlink Price Feeds with AggregatorV3Interface) (Reference: [Easy2Pay](https://github.com/luloxi/Easy2Pay)) + +### Social + +- ✅ **Add a profile for the collector** with their NFTs and info about them ## Phase 2 ### Simple Mint +- ✅ **Simple minting function** for artists to upload their metadata to IPFS and sign a EIP 712 message, and then wait for an investor (first minter) to pay for the contract creation transaction. - **Determine which Royalty standard to implement**, and start implementing it (References: [ERC-2981](https://eips.ethereum.org/EIPS/eip-2981) | [ERC-4910](https://eips.ethereum.org/EIPS/eip-4910) | [ERC-721C compared to ERC-2981 and ERC-4910](https://blog.xp.network/the-battle-for-nft-royalties-meet-the-erc-2981-erc-4920-and-erc-721c-b71d6ba28acf) +- **Implement a database to store the signatures** that allows first minters to start a collection (Reference: [grants.buidlguidl.com](https://github.com/BuidlGuidl/grants.buidlguidl.com)) - **First minter gets a share of the royalties** of all the NFTs minted in that collection -- **Periodically airdrop dividends** in USDC for creators (and first minters if appliable) (may not even be necessary if royalties pay redirect funds to the creators directly) ### Marketplace - **Display auction info and interactions** +- **Add NFTs available for first minting** reading from the database with NFTs available to complete the Simple Mint process - **Batch buying NFTs**, to reduce gas fees and the amount of transactions a user needs to make +- **Mixed pay** that allows paying in USDC or native gas token for the same amount of USD, and/or maybe crosschain payments with USDC CCTP or Chainlink CCIP (integrate Chainlink Price Feeds with AggregatorV3Interface) (Reference: [Easy2Pay](https://github.com/luloxi/Easy2Pay)) - **Integrate GraphQL to index NFTs** and save RPC calls (Reference: [Bootstrap a Full Stack Modern dapp using the Scaffold-ETH CLI and Subgraph Extension](https://siddhantk08.hashnode.dev/bootstrap-a-full-stack-modern-dapp-using-the-scaffold-eth-cli-and-subgraph-extension)) ### Social +- **Allow seeing other collectors profiles** and their NFTs - **Add individual NFT pages** with more info about the NFT, if it's on sale, and the artist and bigger images -- **Add a page for the collector** with their NFTs and info about them - **Add a page for the artist** with their NFTs and info about them - **Add a way for artists (and collectors) to register their info (ideally with a signature)** - **System to validate artists and collectors (and maybe enable them to Simple Mint and be able to disable them to prevent spam)** ## Phase 3 +- **Periodically airdrop dividends** in USDC for creators (and first minters if appliable) (may not even be necessary if royalties pay redirect funds to the creators directly) + ### Social - **Artist NFT (limited edition)**: Holders of artists NFTs get access to backstage, events, a free drink on live events, etc @@ -174,6 +179,9 @@ Visit your backend on: `http://localhost:4000/`. You can see what data is being # Completed product description +- Project started on [Aleph Hackathon](https://www.aleph.crecimiento.build/es-aleph-hackathon) +- This repo was started with `npx create-eth@latest` with Foundry and integrated with the contracts and frontend from [github.com/luloxi/technai-marketplace](https://github.com/luloxi/technai-marketplace) + ## Deployed artifacts ### Frontend diff --git a/packages/nextjs/components/Footer.tsx b/packages/nextjs/components/Footer.tsx index 92b3c62..830b9e8 100644 --- a/packages/nextjs/components/Footer.tsx +++ b/packages/nextjs/components/Footer.tsx @@ -1,27 +1,28 @@ import React from "react"; -import Link from "next/link"; +// import Link from "next/link"; import { hardhat } from "viem/chains"; -import { CurrencyDollarIcon, MagnifyingGlassIcon } from "@heroicons/react/24/outline"; +// import { CurrencyDollarIcon, MagnifyingGlassIcon } from "@heroicons/react/24/outline"; import { HeartIcon } from "@heroicons/react/24/outline"; import { SwitchTheme } from "~~/components/SwitchTheme"; -import { BuidlGuidlLogo } from "~~/components/assets/BuidlGuidlLogo"; -import { Faucet } from "~~/components/scaffold-eth"; +// import { Faucet } from "~~/components/scaffold-eth"; import { useTargetNetwork } from "~~/hooks/scaffold-eth/useTargetNetwork"; -import { useGlobalState } from "~~/services/store/store"; + +// import { useGlobalState } from "~~/services/store/store"; /** * Site footer */ export const Footer = () => { - const nativeCurrencyPrice = useGlobalState(state => state.nativeCurrency.price); + // const nativeCurrencyPrice = useGlobalState(state => state.nativeCurrency.price); const { targetNetwork } = useTargetNetwork(); const isLocalNetwork = targetNetwork.id === hardhat.id; return (