Search projects, hackathons, sponsors and tech

    ← All projects

    Demo

    About

    The problem it solves Squabble is a fast-paced, social word game designed for private friend groups on Farcaster. In each match, 2 to 6 players compete on the same randomized letter grid in real-time, racing against the clock to place or create as many words as possible on the grid. Squabble provides short 2-minute matches and optional micro-stakes. Squabble consists of a [Farcaster](https://farcaster.xyz) mini-app and an XMTP agent. Users create an XMTP group chat on Coinbase Wallet and add the Squabble agent (***squabble.base.eth***). Within the group, users can interact with the agent to start matches, view the leaderboard, access games, and use simple commands like help, rules, etc. The agent and mini-app are designed to communicate with each other. For example, when users request to create a game, the agent contacts an API, generates a game, and returns the mini-app’s URL for that game to the chat. Then, users can start playing by opening the mini-app embed. When creating a game, the user can optionally ask the agent to set a bet amount to play with, but a game can also be free (no staked bet). If the game has a bet amount set, before being able to start the game, all the players need to stake the specified amount of $ (e.g. $1). The checkout process for staking/betting is performed through [DaimoPay](https://pay.daimo.com/), and interacts directly with a custom contract deployed by us on Base ([find it here](https://basescan.org/address/0x8b02765fc0afA9aAC34B82322201FCD506Fb2bd8)). The real-time game logic has been implemented through [Socket.IO](https://socket.io/). Finally, at the end of the game, the prize pool is automatically distributed to the winner(s), and the agent sends a recap message on the group chat with the winner details. ---- **How to Play** 1. Create a group chat on Coinbase Wallet 2. Invite **@squabble.base.eth** to the group chat 3. Tag **@squabble.base.eth** in the group chat and ask them to start a game 4. Bet on the game and compete to see who can find the most words! ![image](https://assets.devfolio.co/content/29104fbb7ec444f99769e1f524800daa/de5e314c-ca59-4449-98e8-758d2a3122cf.png)

    How it's made

    Challenges we ran into We approached the project by building something that strongly connects the agent component to the game mini-app within a Coinbase Wallet context. In doing so, we encountered several challenges: - The addresses users have in Coinbase Wallet, often tied to Base names, are not always linked to Farcaster FIDs. In other words, the addresses used to create a group chat in a Coinbase Wallet are not connected to users' Farcaster identities. This makes retrieving the Farcaster account associated with a given address in the group chat quite impossible for the agent. - The XMTP group chat itself lacks context regarding Farcaster identities. As a result, the only way to gather profile information is through the addresses in the group chat. However, this is not feasible due to the limitation mentioned in point 1. - Sign In With Farcaster in Coinbase Wallet mini-apps was broken during the hackathon, so we had to test everything on Farcaster itself and build a mocked authentication to make it work on Coinbase wallet. - The real-time grid is designed for multiple users (up to 6) to connect and play simultaneously. This was a challenge because, in addition to the mini-app itself, we had to develop a service with Socket.IO that connects to both the mini-app and the agent.