CKB-UGMP is a prototype for a universal Spore / DOB minting workflow on CKB.
The current MVP focuses on image asset upload, DOB metadata drafting, Spore mint transaction construction, dry-run progress saving, and local history lookup.
- Next.js 14 + TypeScript frontend
- CCC wallet connector integration
- CKB testnet by default
- Server-side Pinata/IPFS upload API
- DOB metadata draft generation
- Spore
createSporemint path - Dry-run mint path for environments where wallet signing is blocked
- Local browser history for upload and mint records
- History export/import
- Local lookup by CID, IPFS URI, Spore ID, or tx hash
- Health check route at
/api/health
app/ Next.js app router pages and API routes
components/ Wallet and mint workbench components
lib/ Pinata, DOB metadata, and Spore mint helpers
types/ Shared TypeScript types
docs/flow.md Key prototype flow notes
npm install
npm run devThen open:
http://localhost:3000
For LAN testing:
npm run dev:lanCopy .env.example to .env.local and fill in the required values:
cp .env.example .env.localNEXT_PUBLIC_IS_MAINNET=false
PINATA_JWT=
PINATA_GATEWAY_HOST=gateway.pinata.cloudPINATA_JWT is required for real IPFS uploads. Keep it server-side only. Do not expose it with a NEXT_PUBLIC_ prefix.
npm run lint
npm run builddocker build -t ckb-ugmp:latest .
docker run --rm \
--env-file .env.local \
-p 3000:3000 \
ckb-ugmp:latest- On-chain Spore/DOB querying is not implemented yet.
- Real mint requires a wallet environment that can complete CKB testnet transaction signing.
- Dry-run records are local simulation records and are not CKB on-chain transactions.
See docs/flow.md for the current prototype flow.
For the IPFS / Spore DOB storage design, including Pinata upload, CID metadata mapping, storage tradeoffs, and image rendering differences, see docs/ipfs-spore-storage.md.