About the Project — TrustFi

Inspiration

  • Trust on the internet is still clunky. Users juggle screenshots, email threads, and unverifiable badges to prove achievements. We wanted a portable “reputation layer” that works across apps, chains, and communities without relying on walled gardens.
  • KILT’s DID + Verifiable Credentials model inspired us: attest once, verify anywhere. We paired that with NFT-based collectibles so reputation can be both verifiable and delightful.
  • Hackathon constraints pushed us to design for speed, clarity, and reliability on everyday hardware (Windows dev, browsers with many extensions, and less-than-perfect networks).

What it does

  • Profiles: Users connect a wallet, get a DID, and maintain a portable profile.
  • Reputation Cards: Issuers mint NFT “cards” (tiers 1–3) and attach verifiable credentials (VCs) via KILT.
  • Verification: The dashboard shows which cards are “verified” (linked to an active, non‑revoked VC).
  • Issuers & Admins: Issuers can generate claim links/signatures; admins manage templates and policy.
  • Developer Sandbox: A local role override (env‑gated) enables demo/testing of protected routes without on-chain role edits.
  • Data & Insights: Supabase powers activity feeds, caching, and claim logs to keep the UI fast and auditable.

How we built it

  • Smart Contracts (Solidity 0.8.20, Hardhat)
    • ProfileNFT.sol, ReputationCard.sol
    • Deployment scripts + ABI sync to the frontend via a PowerShell helper.
  • Frontend (React + TypeScript + Vite + Tailwind)
    • Web3 via wagmi + viem, @web3modal/wagmi for wallet UX.
    • Animated, responsive UI (motion), pagination, filters, and verification badges.
  • KILT Integration
    • DIDs for identity; credentials fetched by holder DID.
    • Credential-to-card linking via claim.card_id for verification state.
  • Supabase
    • Tables for profiles, templates cache, claim logs, collectables, and claim links.
    • Edge Function (e.g., signature generation) for secure, server-side workflows.
  • Tooling & DX
    • Vite config hardened for Windows (custom cache dir, pre-start clean script).
    • Granular chunking (React/vendor/wagmi/admin/issuer) for fast loads and good code‑splitting.
    • Documentation and scripts for redeploying, syncing ABIs, and updating env values.

Challenges we ran into

  • KILT mapping: Not all credentials included card_id—we surfaced “unmapped” credentials clearly and made the UI resilient.
  • IPFS/metadata: Normalizing tokenURI/IPFS and adding fallbacks to avoid blank renders.
  • UX polish under time pressure: Routing gaps, JSX slips, and guarded routes surfaced only at integration time; we addressed and added guards.

Accomplishments that we're proud of

  • A clean, modern dashboard that makes verifiable reputation feel intuitive, not academic.
  • Seamless DID + VC integration with clear verification signals in the UI.
  • Issuer tooling that’s usable in a demo and ready to harden for production.
  • Robust DX: ABI sync script, Windows‑safe Vite config, and a pragmatic role sandbox for demos.
  • Documentation that helps others replicate, extend, and audit the system.

What we learned

  • Practical VC UX is about clarity and failure modes: users need to know why a card is (not) verified.
  • DID/VC and NFT worlds can complement each other: on‑chain artifacts for ownership, off‑chain credentials for privacy and revocation.

What's next for TrustFi

  • Stronger Issuer Ops: issuer reputation, revocation UI, and multi‑sig issuance policies.
  • Attestations & ZK: selective disclosure and privacy‑preserving proofs for claim subsets.
  • Multi‑chain footprint: expand beyond testnets and add network‑aware routing.
  • Governance & Marketplace: templates, discoverability, and community-driven trust frameworks.
  • CI/CD & Observability: e2e tests, GitHub Actions, Canary deployments, and production monitoring.
  • Mobile & PWA: installable experience, offline caching for credentials, and push notifications.

Built With

Share this project:

Updates