Decentralized business trust & reputation on Stellar Soroban
TrustMesh is trust infrastructure for businesses, startups, agencies, freelancers, vendors, and service providers — not crowdfunding, not escrow, not NFTs, not a DAO, not CRM, and not LinkedIn.
Organizations establish verifiable trust through completed relationships, verified reviews, dispute history, reputation scores, and immutable on-chain records.
| Live demo | https://trust-mesh-taupe.vercel.app |
| Network | Stellar Testnet · Soroban |
| Stack | Next.js 15 · TypeScript · Rust · 6 Soroban contracts |
| Program | Stellar Journey to Mastery — Green Belt |
Built as a production MVP on the existing Orange Belt contract foundation.
Mobile-responsive landing + dashboard (390×844)
Desktop landing
Organizations — search, filters, on-chain register
Relationships — lifecycle actions + confirm dialogs
Settings — network, 6 contract IDs, light/dark theme
CI/CD — Contracts (test + WASM) → Frontend (lint/typecheck/test/build) → Deploy gate
Full deployment record: deployments/TRANSACTIONS.md · env: deployments/testnet.env
- Six cooperating Soroban contracts with explicit admin + authorized-caller boundaries
- Factory orchestration that talks to registry, relationship, reputation, and treasury in one flow
- Reputation scoring from completions, verified reviews, and dispute outcomes
- SAC-backed treasury — optional Stellar Asset Contract custody for deposits, fee pulls, and fee skim
- Wallet picker on connect (Freighter / xBull / LOBSTR / Albedo / Hana / Rabet)
- Freighter-signed invokes for register / relationships / reviews (real Testnet txs)
- Empty-by-default console — no seed tables, no fake balances
- Search, filters, pagination, toasts, confirm dialogs, light/dark theme
- Guided first-time onboarding (wallet → role → organization → next action)
- Privacy-first product analytics (local events + optional PostHog)
- Error monitoring (local incidents + optional Sentry)
- Live Testnet deployment with contract IDs + transaction hashes
- Event streaming via RPC
getEventsinto a live activity timeline
Problem. Businesses still prove trust with PDFs, screenshots, and platforms that own the data.
Solution. TrustMesh records organizations, working relationships, reviews, and reputation on Stellar Testnet so a partner can verify the trail themselves.
flowchart LR
A[Connect wallet] --> B[Choose role]
B --> C[Publish organization]
C --> D[Create relationship]
D --> E[Accept / complete]
E --> F[Submit review]
F --> G[Public reputation + activity]
Guided setup lives at /onboarding. Human-language copy explains each wallet approval. Failed actions stay off-chain and offer a retry (including free Testnet funding via Friendbot).
flowchart TB
subgraph Clients
UI[Next.js Console]
Wallets[Freighter / xBull / LOBSTR / Albedo]
end
subgraph Soroban["Stellar Testnet · Soroban"]
REG[Organization Registry]
FAC[Trust Relationship Factory]
REL[Trust Relationship]
REV[Review Verification]
REP[Reputation]
TR[Treasury]
end
UI --> Wallets
UI --> REG
UI --> FAC
UI --> REL
UI --> REV
UI --> REP
UI --> TR
FAC -->|get_organization| REG
FAC -->|create| REL
FAC -->|ensure_tracked| REP
FAC -->|record_fee| TR
REL -->|record_completed / dispute| REP
REV -->|get_organization| REG
REV -->|record_verified_review| REP
REV -->|record_fee| TR
sequenceDiagram
participant Owner
participant Admin
participant Registry as Organization Registry
participant Factory as Relationship Factory
participant Rel as Trust Relationship
participant Reviews as Review Verification
participant Rep as Reputation
participant Treasury
Owner->>Registry: register_organization
Admin->>Registry: verify_organization
Owner->>Factory: create_relationship
Factory->>Registry: get_organization
Factory->>Rel: create
Factory->>Rep: ensure_tracked
Factory->>Treasury: record_fee
Owner->>Rel: accept
Owner->>Rel: complete
Rel->>Rep: record_completed_relationship
Owner->>Reviews: submit_review
Reviews->>Treasury: record_fee
Admin->>Reviews: verify_review
Reviews->>Rep: record_verified_review
flowchart LR
Admin -->|initialize / set_authorized| AllContracts
Factory -->|create| Relationship
Factory -->|ensure_tracked| Reputation
Factory -->|record_fee| Treasury
Relationship -->|score updates| Reputation
Reviews -->|record_verified_review| Reputation
Reviews -->|record_fee| Treasury
Owner -->|register / accept / submit| RegistryRelReviews
| Contract | ID (testnet) | Role |
|---|---|---|
| Organization Registry | CD6AAYZ7…NRZT |
Register / verify orgs + vendors |
| Reputation | CDYSM4LG…RBL5 |
Trust scores from reviews & completions |
| Treasury | CA63C3PL…MONH |
Fee config, deposits, fee accounting |
| Trust Relationship | CBCTIWGK…LDXJ |
Lifecycle, disputes, completion |
| Trust Relationship Factory | CBF5KOXX…JGHK |
Cross-contract relationship orchestration |
| Review Verification | CBXOCI2B…J3KF |
Submit / verify / reject reviews |
First deploy transaction:
384cb67cad2cdcc4c27dc50bb445aed03da1c7619e0d3cec78ac78f80ba7fcd0
Explorer: https://stellar.expert/explorer/testnet/tx/384cb67cad2cdcc4c27dc50bb445aed03da1c7619e0d3cec78ac78f80ba7fcd0
OrganizationRegistered · OrganizationVerified · RelationshipCreated · RelationshipCompleted · ReviewSubmitted · ReviewVerified · ReputationUpdated · TrustScoreUpdated · DisputeOpened · DisputeResolved
.
├── contracts/ # Soroban workspace (6 crates + tests)
├── frontend/ # Next.js 15 · TypeScript · Tailwind
├── scripts/ # deploy.sh + deploy.ps1
├── deployments/ # Live testnet addresses + tx hashes
├── docs/ # Architecture + demo notes
├── .github/workflows/ci.yml # cargo test ‖ npm test/lint/build
└── README.md
Every push / PR on master runs a gated pipeline:
- Contracts —
cargo test --workspace→ WASM build (6 crates) → validatedeployments/testnet.json - Frontend —
npm ci→ lint → typecheck → test → production build - Deploy gate — confirms Vercel production path after both jobs pass
CI: .github/workflows/ci.yml
Latest green run: https://github.com/nishant-uxs/TrustMesh/actions/runs/30162067608
- Rust stable + wasm target (
wasm32v1-none) - Stellar CLI v25+
- Node.js 20+
cargo test --workspace
stellar contract build
# Windows
.\scripts\deploy.ps1 -Source deployer -Network testnet
# macOS / Linux
bash scripts/deploy.sh --source deployer --network testnetcd frontend
cp ../deployments/testnet.env .env.local
# optional: PostHog / Sentry keys from frontend/.env.example
npm install
npm run devstellar keys fund deployer --network testnet
.\scripts\deploy.ps1 -Source deployer -Network testnetThen refresh frontend/.env.local from deployments/testnet.env.
Pages: Landing · Get started · Dashboard · Organizations · Relationships · Reputation · Reviews · Analytics · Activity · Public Profile · Settings
Quality bar:
- Guided onboarding for first-time users
- Multi-wallet connect modal
- Light / dark theme
- Search + status filters + pagination
- Toasts + confirm dialogs
- Transaction panels that say what to do next
- Skeletons + empty states with a next action (no fake seed data)
- Classified wallet / RPC / contract errors with recovery
- Product analytics + monitoring panels
- Live activity feed from contract events
- Responsive desktop / tablet / mobile layout
- Analytics: local product events (see Analytics page). Optional PostHog via
NEXT_PUBLIC_POSTHOG_KEY. Docs:docs/ANALYTICS.md - Monitoring: local incident log (see Settings). Optional Sentry via
NEXT_PUBLIC_SENTRY_DSN. Docs:docs/MONITORING.md
Neither integration runs unless the env var is set. No secrets belong in git.
# 39 smart-contract tests
cargo test --workspace
# Frontend
cd frontend
npm run lint
npm run typecheck
npm test
npm run buildWatch: https://drive.google.com/file/d/1GWH_qCdsZ1c9zzUfPgUF_nY-hmoOfmzN/view?usp=sharing
Recording script: docs/DEMO_VIDEO.md
Suggested 90s flow: landing → Get started → connect wallet → Friendbot (optional) → choose role → publish organization (sign) → public receipt → start a relationship.
Green Belt evidence template (real links only): docs/GREEN_BELT_EVIDENCE.md
Mapped requirement → implementation: docs/GREEN_BELT_CHECKLIST.md
- Production MVP workflow on Testnet
- First-time onboarding
- Human-language transaction feedback
- Mobile / tablet / desktop layouts
- Error handling + recovery
- Loading and empty states
- Product analytics (local + optional PostHog)
- Error monitoring (local + optional Sentry)
- Shared graph cache / fewer redundant RPC reads
- Smart contract tests preserved
- Frontend tests expanded
- CI/CD (lint, typecheck, tests, WASM, build)
- Production documentation
Orange Belt contract map remains in docs/ORANGE_BELT_CHECKLIST.md
- Admin-only
initialize/set_authorized/verify_*/ dispute resolution - Factory-only relationship creation entry (plus admin)
- Reputation + Treasury gated by authorized contract callers
- Reviewer must own the reviewer organization
- Creator must own one side of a relationship
- Self-review blocked; duplicate pair reviews blocked
- Empty-by-default UI — no fabricated balances or seed tables
- Product analytics never persist full wallet addresses
- Optional Sentry/PostHog keys live in env vars only
MIT






