Maindrop
Maindrop - is platform that simplifies the process of creating and sending NFT gifts to anyone, whether they have a crypto wallet or not. Traditionally, sending NFTs to someone without a wallet is challenging. Maindrop addresses this by allowing users to send existing or newly created NFTs to a recipient’s email or phone number. The recipient can then claim the NFT by verifying their identity as the owner of that email or phone number.
How we built it
- Front-end
- Developed using a NextJS app with server-side rendering.
- Built NFT image generation tools for easy customization.
- Used GraphQL Apollo for API communication
- Implemented role-based UI rendering to tailor the user experience.
- Authentication is handled via WalletConnect and web3 signatures, ensuring secure access.
- Back-end
- EventService - A Node.js service responsible for blockchain event handling, communicating with the API through internal channels. It utilizes a Redis-based queue system for resilience against server restarts.
- TransactionService - A Node.js service designed to monitor and report the status of blockchain transactions.
- NFTSyncService - This Node.js service imports and synchronizes NFTs from a wallet. Upon receiving a wallet address from the API, it scans the blockchain, prepares the data, and sends it in batches back to the API.
- The API encapsulates core business logic and authentication processes, with further details available here.
New learnings
- Developed an ERC1155 smart contract.
- Leveraged OpenZeppelin contracts and Defender for secure contract management.
- Integrated with Alchemy API for enhanced blockchain interactions.
- Incorporated Simplehash API for NFT data handling.
- Built robust Redis-based queues resilient to server restarts.
- Established direct internal service communication within a Kubernetes environment.