
TipJar
BUILDING A USER-OWNED TIPPING ECONOMY
Demo
About
The problem it solves TipJar solves the problem of sending small payments online without relying on centralized platforms that take a cut or hide where the money goes. It lets anyone send a tip directly to a smart contract on the blockchain along with a short message, so the transaction is transparent and publicly verifiable. This makes it useful for things like supporting creators, tipping service workers, or sending small thank-you payments during online events. Because everything is recorded on-chain, users can see exactly where the money goes and confirm that it was received. Overall, TipJar makes micro-payments simpler, more transparent, and trustless compared to traditional tipping platforms. Use of AI tools and agents During development, AI was used to help generate and debug parts of the smart contract, configure the Hardhat environment, and troubleshoot issues when deploying the contract to the Base Sepolia testnet. It was also used to help build the frontend by suggesting React/Next.js components, integrating wallet connections with RainbowKit and Wagmi, and fixing errors related to dependencies, hydration, and transaction handling. As bugs came up, such as wallet connection issues, missing dependencies, and problems reading events from the blockchain, the AI helped analyze error messages and suggest fixes, which sped up the debugging process. In this way, the AI tools acted like a collaborative coding assistant that worked alongside the developer, helping with both the blockchain backend and the web interface so the different parts of the project could successfully connect and function together.
How it's made
Challenges we ran into WalletConnect wouldn’t start without a projectId, our env file wasn’t being read, and MetaMask got stuck loading because of dependency mismatches between RainbowKit/Wagmi/MetaMask SDK (plus peer dependency conflicts). We also hit Next.js hydration issues from dynamic wallet state, a production build break from BigInt/TypeScript target settings, and tips disappearing after refresh because we weren’t re-fetching contract logs. Add slow Base Sepolia receipts and localhost vs HTTPS differences, and it turned into a chain of small Web3 + Next.js edge cases we had to debug all at once.