Foundation
Authentication & Security
- Session-based authentication with secure cookie handling (no localStorage)
- Web3 wallet sign-in via Sign-In With Ethereum (SIWE / EIP-4361) with one-time nonce (5-min TTL)
- RBAC: ADMIN, BRAND_ADMIN, OPERATOR, VIEWER roles with per-brand data scoping
- ERC-1271 Smart Wallet support (Coinbase passkey compatible)
- Wallet linking via EIP-191 signature
- GDPR: data export (Art. 15) and erasure (Art. 17) endpoints
- CSRF protection, rate limiting (per-IP + per-user), and API versioning
Product Lifecycle
- Product registry with GTIN validation (GS1 mod-10 check digit) and 14-digit normalization
- DID generation: `did:galileo:01:{gtin}:21:{serial}`
- Lifecycle state machine: DRAFT → MINTING → ACTIVE → TRANSFERRED / RECALLED
- Optimistic concurrency control for safe concurrent minting
- Product recall and ownership transfer
- ERC-3643 compliant transfer with five-module compliance check (jurisdiction, sanctions/OFAC, brand authorization, CPO status, service center)
- Product image upload with cloud storage integration
- QR code generation per GS1 Digital Link specification
- Bulk CSV import (up to 500 products per batch, with per-row validation and error reporting)
- Batch minting (up to 100 DRAFT products at once)
- Public product verification endpoint
GS1 & Blockchain
- GS1 Digital Link resolver: `GET /01/:gtin/21/:serial` → JSON-LD Digital Product Passport
- `@galileo/shared`: Zod schemas, GTIN validation, DID utilities, GS1 URL encoding, 8 luxury categories
- viem chain client configured for Base Sepolia with fallback transport
- ERC-3643 Solidity interfaces (Foundry, 722 contract tests)
B2B Dashboard
- Product list with filtering, sorting, and pagination
- Product creation with real-time GTIN and serial validation
- Product detail with full lifecycle controls (mint, transfer, recall)
- Batch CSV import with drag-and-drop and per-row error reporting
- Audit log with CSV/JSON export and date-range filtering
- GDPR self-service (data export and account deletion)
- Brand onboarding wizard
- Web3 wallet connection (MetaMask, Rabby, Coinbase Smart Wallet via wagmi)
- Error boundaries on all critical pages
Consumer Scanner PWA
- QR scanning via native Barcode Detection API (ZXing WASM fallback)
- Product authenticity page with full provenance timeline
- Material composition display
- GS1 Digital Link deep-link routing (`/01/:gtin/21/:serial`)
- Offline caching of previously scanned products
- Camera guidance UX
Observability & Operations
- Health probes (database + blockchain connectivity)
- Structured logging with PII redaction
- Error tracking and alerting
- Webhook system: outbox pattern, HMAC-SHA256 signing, exponential backoff retry
- Append-only audit trail with actor anonymization on account deletion
- Multi-stage Docker image with health check
- CI pipeline (automated typecheck, lint, and test on every push)
Testing
- 372 unit tests (API + shared library)
- 9 end-to-end scenarios (auth, product lifecycle, batch import, wallet sign-in, audit export, transfer compliance)
- Isolated test database environment