on-chain identity + decentralized storage for authentic connections 🔐💕
SelfMate is a revolutionary decentralized dating platform that solves the critical problems of traditional dating apps: fake profiles, catfishing, underage users, and centralized data control. By leveraging cutting-edge Web3 technologies, SelfMate creates a trustworthy ecosystem where only verified humans can participate in meaningful connections.
Traditional dating apps suffer from:
SelfMate addresses these issues through:
Mandatory Identity Verification: Every user must complete real identity verification through Self Protocol before accessing the platform. This includes:
Blockchain-Based Trust: Smart contracts on Ethereum manage user verification status, creating an immutable record that cannot be faked or manipulated. Once verified, a user's status is permanently recorded on-chain.
Decentralized Data Storage: Unlike traditional apps that store your photos and personal data on centralized servers, SelfMate uses the Walrus Network (a decentralized storage solution) to store user profiles. This means:
Zero Fake Profiles: The combination of biometric verification, blockchain records, and document verification makes it virtually impossible to create fake profiles or multiple accounts.
SelfMate is designed for:
This isn't just a dating app with crypto payments - it's a complete reimagining of how online dating can work when built on trustless, decentralized infrastructure.
SelfMate represents a complete reimagining of dating apps built from the ground up with Web3-native principles. Rather than retrofitting blockchain features onto a traditional app, we designed every component to leverage decentralized infrastructure for trust, privacy, and user control.
Challenge: How do you verify real humans without compromising privacy?
Solution: We integrated Self Protocol's cutting-edge zero-knowledge identity verification system that allows users to prove they are real, verified humans over 18 without revealing their actual identity documents to our platform.
Implementation Details:
@selfxyz/core and @selfxyz/qrcode for seamless UXNotable Hack: We created a custom SelfVerificationRoot contract that extends Self Protocol's base verification to add dating-specific logic like user counting and admin controls while maintaining the zero-knowledge properties.
Challenge: How do you store sensitive dating profiles without centralized servers?
Solution: We use Walrus Network (Mysten Labs' decentralized storage solution) to store all user profile data, photos, and metadata in a fully decentralized manner.
Implementation Details:
/api/walrus/upload)IdentityStorage.sol contractNotable Hack: We built a hybrid storage system where minimal metadata lives on-chain (just blob IDs and basic flags) while all rich content lives on Walrus, giving us the best of both worlds - blockchain immutability with decentralized storage scalability.
Challenge: Different protocols work best on different chains.
Solution: We deployed a multi-chain architecture optimizing each component for its ideal network:
Main Dating Contract (nomaddating.sol): Deployed on Celo Sepolia at 0xd5e4a7b1f649603fb87e5635b168c003e4face83
Identity Storage Contract (IdentityStorage.sol): Deployed on Ethereum Sepolia
Frontend Architecture:
Backend Architecture:
Notable Hack: We created a unified context system that manages Web3 state, user verification status, and app navigation in a single reactive store, eliminating prop drilling and ensuring consistent state across components.
Problem: Users shouldn't need to understand they're interacting with multiple blockchains.
Solution: Built a unified Web3 service layer that automatically switches networks and handles cross-chain operations transparently.
Problem: How do you match people without exposing their data?
Solution: We store basic matching criteria (age range, nationality preferences) on-chain in a privacy-preserving way, while keeping detailed profiles on Walrus. The matching algorithm runs client-side with encrypted data.
Problem: Web3 wallets are notoriously difficult on mobile.
Solution: Implemented RainbowKit with mobile-optimized wallet connections and QR code fallbacks. Added progressive Web3 enhancement where core features work without wallet connection.
Problem: Ensuring profile updates propagate correctly across Walrus and blockchain.
Solution: Implemented an eventual consistency model with client-side caching and background sync processes.

