Search projects, hackathons, sponsors and tech

    ← All projects

    Demo

    About

    The problem it solves Sendly answers the problem of making gift-giving more personal and varied in today's digital age. Traditional cash gifts can feel impersonal, while physical gift cards are limited by location and redemption options. Sendly solves this by offering a blockchain-based solution that allows users to send customizable digital gift cards to anyone, anywhere, and at any time. ![image](https://assets.devfolio.co/content/6e37018937024e859ed67047c1cee827/23cc710c-924f-437b-be64-7ca41591dcce.png) It bridges the gap between Web2 and Web3, enabling seamless integration with both traditional online services (e.g., Amazon, Apple (in the long future haha but I hope)) and decentralized platforms (via the Base network). ![image](https://assets.devfolio.co/content/6e37018937024e859ed67047c1cee827/bff80ece-e602-4480-8c0c-40620b2cdf7e.png) This gives recipients to spend their gifts flexibly, while also introducing Web 2 users to Web 3 concepts, fostering curiosity and adoption.

    How it's made

    Challenges we ran into - **High Gas Costs** Struggled with high gas fees during transactions. **Solution**: Uploaded SVG/JSON to IPFS (or Pinata, Web3.Storage, etc.) and passed only a link (e.g., ipfs://...) to the contract. **Changes Made**: SVG and metadata are now uploaded to IPFS via web3.storage. The contract now receives only a short metadata.json link instead of the full JSON/SVG. **Impact**: Reduced minting gas costs by 5-10 times. - **Missing ERC721Enumerable Interface** Initially, the tokenOfOwnerByIndex method and the ERC721Enumerable interface were not implemented. **Solution**: Had to create a new contract to include these features. - **Late Integration of Smart Wallet** Added the Smart Wallet feature late in development. Previously, I used Create React App (CRA), which has limited structure and poor support for modern Web3 packages, causing difficulties with Smart Wallet integration. **Solution:** Implemented Coinbase Smart Wallet integration using the wagmi library with the coinbaseWallet connector from @wagmi/connectors. **Future Plan:** Migrate from react-scripts to Vite or Next.js, which better support modern dependencies and avoid conflicts with TypeScript 5.x. - **Display Issues with Current NFTs in Wallet** After redeeming, I filtered the old giftCards array and called setGiftCards(updatedCards). However, React might not update the giftCards state in time before loadGiftCards calls setGiftCards(cards) with a new array, leading to desynchronization and display bugs. **Solution**: This could be addressed by ensuring state updates are batched or using a loading state to prevent race conditions—specific implementation can be refined based on your code. Then **I broke my head.**