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/wagmifor wallet UX. - Animated, responsive UI (motion), pagination, filters, and verification badges.
- Web3 via
- KILT Integration
- DIDs for identity; credentials fetched by holder DID.
- Credential-to-card linking via
claim.card_idfor 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.

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