This project is a Decentralized Name Service (DNS), enabling users to register, manage, and resolve ids on the blockchain. The project leverages blockchain technology to provide a decentralized, secure, and transparent naming system.
It consists of three main components:
- Contract: The smart contract
BuidlDomains.sol
manages name registration and ownership on the blockchain. - Backend: A GraphQL server built with Node.js and TypeScript provides an API layer for interacting with the contract data that is indexed and managing metadata.
- Frontend: A React application built with Vite serves as the user interface for interacting with the decentralized name service, using Privy smart wallets.
Backend: https://buidl-domains.aditipolkam.me/
Frontend: https://buidl-domains.vercel.app/
Contract: https://sepolia.basescan.org/token/0x53bd9bdff89037a97375e33ae1c412e94d7f2c6c
API Docs: /backend/README.md
Claim Name: Users can register and claim a unique name on the blockchain, ensuring ownership and decentralization.
Setup Profile: Once a name is claimed, users can set up their profile by adding personal information, bio, and other details.
View Profile: Users can view their own profile or the profiles of others, showcasing their claimed name and associated details.
Discover People: Users can explore and discover other profiles on the platform, fostering connections within the decentralized network.
Ensure you have the following installed on your system:
- Node.js (v20 or higher)
- Yarn or npm
- Hardhat (for smart contract development)
- A blockchain node (e.g., Hardhat local node or any testnet)
git clone https://github.com/aditipolkam/buidl-domains
cd buidl-domains
Navigate to the contract
folder to set up the smart contract.
-
Install dependencies:
cd contract yarn install
-
Compile the contract:
npx hardhat compile
-
Deploy the contract:
- Start a local blockchain node:
npx hardhat node
- Deploy the contract to the local node:
npx hardhat ignition deploy ignition/modules/buidl.ts --network localhost
- Start a local blockchain node:
-
(Optional) Deploy to a testnet - Configure your
.env
file with the necessary keys (e.g.,PRIVATE_KEY
,ALCHEMY_KEY
):.- Deploy:
npx hardhat ignition deploy ignition/modules/buidl.ts --network <testnet-name>
- Deploy:
Navigate to the backend
folder to set up the GraphQL server.
- Install dependencies:
cd ../backend yarn install
- Create a
.env
file:DATABASE_URL=<database connection string> CONTRACT_ADDRESS=<deployed_contract_address> RPC=<blockchain_node_url>
- Start the server:
yarn start
Navigate to the frontend
folder to set up the user interface.
- Install dependencies:
cd ../frontend yarn install
- Create a
.env
file: - Add the necessary environment variables:VITE_PRIVY_APP_ID=<privy app id> VITE_GRAPHQL_ENDPOINT=http://localhost:4000 VITE_CONTRACT_ADDRESS=<deployed_contract_address>
- Start the development server:
yarn dev
- Start the blockchain node: Ensure the Hardhat node is running if using a local network.
- Deploy the contract: Make sure the smart contract is deployed.
- Run the backend: Start the GraphQL server.
- Run the frontend: Launch the React development server.
You can now access the frontend at http://localhost:5173
and interact with the decentralized name service!