← Back to home

Drifting Bottle

Drifting Bottle 🌊 🍾 📜 is a Frames social game that boosts engagement by encouraging creativity and curiosity. Users can send or find anonymous bottles that contain a sealed message, reveal its secret and connect with its author.

Screenshots

Drifting Bottle screenshot 1
Drifting Bottle screenshot 2
Drifting Bottle screenshot 3
Drifting Bottle screenshot 4
Drifting Bottle screenshot 5
Drifting Bottle screenshot 6

Problem Statement

Drifting Bottle seeks to entice social interactions across the Farcaster protocol by allowing users to share or find anonymous bottles with messages, and the bottle author's identity will only be revealed when one writes a reply. The game loop involves the following actions:User can write a message, seal it in a bottle and send it to the digital ocean.User can find others' bottles from the ocean, look inside to view their messages.User can choose to write a reply or comment to the bottle's message.When a reply is written, the identity of the author is revealed, the messaged is sealed and the bottle can no longer be found. The message exists only between the author and the replier.User can view one's sealed messages in a dedicated section.Future extensions:UI/UX optimization & improvementsApply scarcity to the number of sending bottles or finding bottles per dayEnable incentives & rewards for playingBring the gameplay on-chaincorrespond send/seal bottles with mint/burn bottles as NFTspermanent sealed messages

Solution

A social game for Frame Embeds in decentralized social network applicationsFrames.js is leveraged for setting up structure of the game, building Frames within Next.js and enable compatibility with Open Frames.Pinata is used for uploading & pinning assets on IPFS, as well as for querying Farcaster user data through its Farcaster API.Next.js & Typescript serves the Frames meta tags through router handlers. The bottle data are stored via Vercel Postgres / Prisma.

Hackathon

Frameworks

2024

Prizes

  • 🏆

    Open Frames Bounty

    XMTP

  • 🏆

    Best Frame using Frames.js2nd place

    frames.js

  • 🏆

    🏆 Frameworks Finalist

    ETHGlobal

Contributors