Inspiration
Every day, millions of people discover amazing dishes at restaurants. They take photos, post on Instagram, tell their friends. But that's where it ends. Your taste has no value beyond a fleeting social moment.
Tmap creates an on-chain social map of food trends where your taste has real value. When you discover an incredible dish, you don't just share it, you stake it. You can Mint a stamp for it right at the restaurant.
If you're early and the dish becomes trendy, your stamp appreciates via our bonding curve. You get paid for having good taste.
What it does
tmap transforms dish discoveries into tradeable on-chain stamps using ERC1155 tokens and bonding curve economics. The core experience works like this: users browse an interactive map showing restaurants and their associated dishes, each with real-time pricing based on current supply. When you find a dish you want to back, you must physically be at the restaurant, our GPS verification requires you to be within 200 meters. This proof-of-presence is crucial; it means every stamp represents someone who actually ate there, not just someone who saw a photo online. Once verified, you spend USDC to mint stamps at the current bonding curve price, which follows the formula: Price = $1 + (supply × $0.125). This means the first stamp costs 1 dollar, but by the time 100 people have minted, each new stamp costs more acc. to bonding curve. Early believers are rewarded as the dish trends upward. Every mint incurs a 5% fee split equally: 2.5% to the referrer who shared the link, 2.5% distributed proportionally to existing holders. Users can sell anytime for 70% of market value. A $10 max spend per user per dish prevents whale manipulation. The app integrates natively with Farcaster, share a dish with your referral link embedded, and earn automatically when friends mint.
How we built it
Frontend: Next.js 15 (App Router), TypeScript, Tailwind CSS. Authentication via Farcaster Mini-App SDK for one-tap login and wallet connection. Smart Contracts: TmapDishes.sol (ERC1155) on Base Sepolia using OpenZeppelin's ERC1155, Ownable, and ReentrancyGuard. Dishes identified by bytes32 hash of restaurantId + dishName. Pricing delegated to BondingCurve.sol library implementing arithmetic series: MintCost = N/2 × (firstPrice + lastPrice). Contract tracks per-user spending limits, rewardPerToken accumulators (Synthetix-style), and referral balances. Gasless UX: Coinbase Paymaster integrated through Farcaster's wallet infrastructure. wagmi's useSendCalls routes transactions through sponsored flow – users sign in Farcaster wallet, paymaster covers gas, users pay only USDC. Backend: MongoDB Atlas for off-chain metadata (dishes, restaurants, user profiles). API routes read data (balances, prices) from blockchain, serve cached metadata for performance. Location verification uses browser Geolocation API with Haversine formula for distance calculation.
Challenges we ran into
Bytes32 consistency: Frontend and contract dish IDs mismatched due to different encoding approaches. Solved by standardizing on keccak256 hashing of concatenated restaurantId + dishName across all code paths.
Bonding curve edge cases: Zero supply causes division-by-zero in reward distribution – we route those fees to protocol recipient instead. Token calculation requires solving quadratics with integer math. We validate non-zero results and provide clear errors when curve price exceeds user's USDC.
Gasless status polling: useSendCalls status sometimes reports "failure" when receipts show success. Added fallback logic checking receipt status codes ("success", "0x1", 1, "1") before declaring completion.
Accomplishments that we're proud of
We shipped a complete product: deployed contracts, gasless transactions, Farcaster integration, and end-to-end user flow from discovery to reward claims on Base Sepolia. The token economics (linear bonding curve, $10 cap, dual referrer/holder rewards) represent novel DeFi primitives applied to consumer use cases. Geo-verification creates genuine proof-of-presence unlike any review platform. Gasless UX via Coinbase Paymaster removes the biggest crypto adoption barrier; users never see gas fees or need ETH.
What we learned
Mini Apps are easy to integrate and gain attention to the product. Friction can build trust (geo-verification adds steps but makes stamps meaningful). The $10 cap feels like a game rule, not a restriction. Leaderboards and social proof drive engagement as much as financial incentives.
What's next for tmap
Make tmap into the next big thing on the base mini app ecosystem! -Base mainnet deployment, push notifications for rewards/trending, IPFS image storage, restaurant dashboard for owners to view stamp analytics. -Personalized discovery algorithm based on stamp history, restaurant partnerships (sponsored stamps, holder airdrops), cross-city leaderboards with "Top Taster" badges. -On-chain culinary passport where stamp history becomes verifiable food identity, brand sponsorships for trending categories, and restaurant-gated experiences for top holders.
Built With
- auth
- circle
- coinbase
- contract
- css
- farcaster
- jvascript
- maps
- mini-app
- next.js
- solidity
- tailwind
- typescript
- usdc


Log in or sign up for Devpost to join the conversation.