Phase 1 prototype of the STBC Registry: a Chia-connected profile, discovery,
and verification platform. See docs/STBC_MASTER_BREAKDOWN.md
for the full project source, decisions, and open questions.
Tagline: Proof. Provenance. Ownership.
public/index.html— the full frontend (three-column homepage, MonkeyZoo showcase profile, Goby wallet integration, live Chia chain height/price/ Dexie offer feeds, and backend-wired profile registration/links/blog/ signature-challenge flows).server.js— an Express backend: real profile/link/post storage, a real one-time signature-challenge issue/redeem round-trip, and CRUD endpoints for every entity in the data model (delegated DIDs, donation addresses, CAT claims, offer records, Profile NFT mint requests, burn-evidence intake). It never fakes verification, minting, or deletion — see below.db.js— the SQLite schema (viabetter-sqlite3), mirroring section 34 of the master breakdown:profiles,delegated_dids,signature_challenges,profile_nft_mints,royalty_records,cat_claims,offer_records,links,posts,donation_addresses,burn_delete_records,audit_events.stbc.db— created at runtime (gitignored); persists across restarts unless the host's filesystem itself is ephemeral.
Real: the visual app; Goby connect/sign/take-offer/donate (method names and params verified against the CHIP-0002 dApp spec and Goby's docs — see below); live chain height/price/offer data with honest fallbacks when a feed is unreachable; the full profile-registration + challenge round-trip against a real SQLite-backed API; and data-model endpoints for delegated DIDs, donation addresses, CAT claims, offer records, and NFT mint requests (these record data for the future chain-verification/minting logic to act on — they don't perform any chain verification, minting, or deletion themselves).
Not yet real (labeled in the API responses and UI): verification badges
beyond UNVERIFIED, actual Profile NFT minting, DID/NFT authority proof, CAT
issuer-authority proof, and any deletion triggered by a burn report (burn
intake only logs evidence for human review — see
POST /api/profiles/:slug/burn-report). These are blocked on two open
technical reviews (REV-002 Profile-NFT-in-DID detection, REV-001 CAT
issuer-claim proof) and require a Chia developer plus pending policy
decisions (fee amount, royalty percentage, re-verification cadence,
burn/legal review).
Goby/Chia API verification note: connect, getPublicKeys,
signMessage (not signMessageById), takeOffer, and transfer (requires
assetId and hex-encoded memos) were checked against CHIP-0002 and Goby's
own docs during this build and corrected where the original guesses were
wrong. Coinset's get_blockchain_state shape and Dexie's offer field names
(offered/requested arrays of {amount, code, name}) were also confirmed.
The one still-unverified detail is Dexie's exact status query-parameter
codes (status=0 is used here as "open offers," a common convention, but
wasn't confirmed against Dexie's docs, which returned 403 in this build
environment).
npm install
npm startThen open http://localhost:3000. The frontend detects the backend via
/api/status; without a running backend it still works as a static app
(MonkeyZoo showcase, wallet, live public data feeds) but registration/
posting/challenge features are disabled.
- Static only: serve
public/index.htmlfrom any static host (e.g. drag thepublicfolder onto Netlify Drop). Backend-dependent features will be disabled. - Static + backend: deploy this repo to a Node host (e.g. Render) with
build command
npm installand start commandnpm start.server.jsservespublic/and exposes the/api/*routes.
Before using this for anything real: replace the mock MonkeyZoo donation
address in public/index.html, and verify current Goby wallet method names/
params against Goby's own documentation (not verified against live docs in
this build).