NFT Infrastructure
EmProps was originally built as an NFT platform — AI generation feeding into NFT minting and marketplace. This documentation covers the entire NFT stack: what's currently running, what we're building next, and reference material from prior work.
Current Focus: Diamond Standard on Arbitrum
We are building NFT collection support using the ERC-2535 Diamond Standard on Arbitrum, funded by an Arbitrum Foundation grant.
Key Documents
- Diamond ADR — Architecture decision (supersedes ADR-019)
- Implementation Plan — 6-phase build plan with detailed specs
What's Currently Running
These systems are live in production or deployed in the turbo monorepo, even if some NFT features are disconnected or partially working.
EmProps Studio (apps/emprops-studio)
The user-facing Next.js application. Contains extensive NFT UI from when the platform was primarily an NFT marketplace:
- Marketplace pages — Browse, collection detail, token detail
- Mint buttons — Per-chain (Tezos, Ethereum, Base)
- Publishing flow — Deploy collections to blockchain
- Collection management — Settings, pricing, editions
- Wallet integration — Dynamic Labs + wagmi (EVM), Beacon (Tezos)
- Contract client — 1,275 LOC core NFT engine across all chains
EmProps API (apps/emprops-api)
The Node.js API in the turbo monorepo. Handles:
- Collection CRUD (create, read, update, delete)
- User management, authentication
- Job queue for AI generation
- No direct blockchain interaction currently — NFT routes need to be added
Legacy Java API (emprops-api — external)
The original Spring Boot marketplace backend that powers https://emprops.ai/marketplace:
- Full marketplace endpoints (collections, tokens, sales)
- Royalty configuration
- Event audit trail
- Profile management
- Contract registry
Tezos Blockchain Syncers (external)
Node.js services that watch blockchain events and create pending-generation tokens:
emprops-syncer-long-tezos— Tezos V1 via tzkt.io WebSocketemprops-syncer-long-tezos-v2— Tezos V2 contractsemprops-syncer-long-ethereum— Ethereum via Infura WebSocketemprops-syncer-long-base— Base chain via Infura WebSocket
Puppeteer API (emprops-puppeteer-api — external)
Screenshot/video generation for p5.js and JavaScript-based generative art. Still needed.
What We're Building
ERC-2535 Diamond Standard on Arbitrum
| Decision | Choice |
|---|---|
| Contract pattern | ERC-2535 Diamond (multi-facet proxy) |
| Tooling | Hardhat 3 (beta) |
| Chain | Arbitrum (Sepolia → One) |
| Minting model | Custodial mintTo (platform signs) |
| Collection setup | Gemini LLM → EmProps v2 instruction set |
| Metadata | GCS + CDN (not IPFS) |
| Indexing | None for v1 (we control all mints) |
Build Phases
| Phase | Scope | Status |
|---|---|---|
| 1 | Smart Contracts — Diamond proxy + factory + facets (Hardhat 3) | Pending |
| 2 | API Endpoints — setup, deploy, generate, mint, metadata | Pending |
| 3 | Database Schema — NFT fields on collection model | Pending |
| 4 | Integration & E2E Testing | Pending |
| 5 | Studio Restoration — Reconnect NFT UI to Arbitrum backend | Planned |
| 6 | Advanced Features — Auction, marketplace facet, Ponder indexer | Future |
Documentation Map
Currently Running Systems
| Document | Description |
|---|---|
| Studio Code Inventory | Every NFT file in emprops-studio — pages, components, hooks, clients, contracts |
| Legacy Architecture | How the original ~10 microservices worked together |
| Legacy Tezos Overview | The currently live Tezos NFT system |
| Tezos Implementation | Contract versions, data flow, mint modes |
| Contract Client | contract-client.ts internals (1,275 LOC) |
| Wallet Integration | Beacon wallet (Tezos) and wagmi (EVM) |
| Minting Components | React mint button components |
New Diamond/Arbitrum Build
| Document | Description |
|---|---|
| Arbitrum Overview | Diamond Standard architecture — contracts, facets, metadata |
| Diamond ADR | Architecture decision for Diamond + Arbitrum |
| Implementation Plan | 6-phase build plan with file inventory |
Reference Only (Never Shipped to Production)
These repos were prototyped but never deployed
The following external repos contain investigation/prototype work that informed the Diamond architecture but were never in production. They are reference material only.
| Document | Description |
|---|---|
| emprops-hardhat | ERC721A + Factory contracts (Hardhat 2) — reference for Diamond facet code |
| emprops-ponder | Ponder blockchain indexer — reference for Phase 6 |
| emprops-react-web3 | React wagmi/viem patterns — reference for studio hooks |
| External Repos Summary | Consolidated overview of all external repos |
Related ADRs
| ADR | Status |
|---|---|
| NFT Diamond Standard on Arbitrum | Current — Contracts + API for Emerge miniapp launch |
| EmProps Studio NFT Revival | Current — Restore studio NFT capabilities, replace legacy services |
| NFT Minting Infrastructure Integration | Superseded — Original ERC721A/ERC1167 plan |
