Inspiration

We wanted to create a safer way for people to transact online — especially in situations where trust is uncertain. Traditional platforms often feel outdated, expensive, or hard to integrate into new applications. So we set out to build a modern, developer-friendly escrow system with a clean UI, smooth authentication, and real-time data handling.

What it does

Bond is a secure escrow application that allows two or more parties to create an agreement, deposit funds, and release them only when conditions are met. It provides:

  • User authentication via email OTP
  • Real-time updates through Convex
  • A clean, responsive UI for creating and managing escrow sessions
  • Actions to initiate, fund, approve, or dispute an agreement
  • A modular structure so developers can plug it into any workflow

How we built it

We built Bond using a full TypeScript stack:

  • Frontend: React + Vite for a fast, modern development experience
  • Styling: Tailwind v4 + Shadcn UI for flexible components
  • Backend & Database: Convex for real-time queries, mutations, and serverless functions
  • Auth: Convex Auth (email OTP + anonymous support)
  • Animations: Framer Motion for smooth transitions
  • Routing: React Router v7
  • Everything is tied together with a consistent, type-safe model from frontend to backend.

Challenges we ran into

  • Configuring Convex Auth and integrating OTP flows smoothly into the UI
  • Making sure authorization logic was secure on both client and server
  • Structuring the database schema to keep escrow states consistent
  • Handling real-time updates without creating duplicate or conflicting actions
  • Ensuring the UI stayed responsive and clean across different devices

Accomplishments that we're proud of

  • A fully working escrow flow from account creation to fund release
  • Integrated multiple options for the blockchains, including Ethereum/Polygon and Polkadot
  • A clean, modern interface built with reusable components
  • Real-time data synchronization that feels instant
  • Type-safe, scalable code that other developers can extend
  • Robust authentication without needing OAuth or external identity providers

What we learned

  • How to architect real-time applications using Convex
  • The importance of enforcing authorization at every layer
  • Best practices for building reusable UI systems with Tailwind and Shadcn
  • How to optimize component structure for clarity and maintainability
  • How to manage multi-party workflows in a secure and predictable way

What's next for Bond

  • Adding dispute-resolution flows with moderator controls
  • Supporting more payment providers and currencies
  • Offering escrow templates (services, rentals, freelance work, etc.)
  • Building an admin dashboard for monitoring active agreements
  • Expanding authentication options to include OAuth providers
  • Deploying a production-ready version with full documentation

Built With

Share this project:

Updates