Production-ready NestJS backend for Scrunchy game asset marketplace
All core features have been implemented following senior backend engineering best practices.
- โ Wallet signature verification (Solana)
- โ JWT token authentication
- โ API key management with rate limiting
- โ Per-API-key and per-user rate limiting
- โ Comprehensive error handling
- โ Asset Management: Create, list, search assets with on-chain integration
- โ Marketplace: Full rental marketplace with on-chain transactions
- โ Access Control: Fast access verification for SDK
- โ Game Management: Registration, API keys, configuration system
- โ SDK Integration: Game-specific asset transformations
- โ API Key Management: CRUD operations, usage tracking
- โ Configuration System: Visuals, attributes, behaviors, filters
- โ Configuration Versioning: History, rollback support
- โ Developer Marketplace: Package installation system
- โ Redis caching layer
- โ Cache warming jobs
- โ Batch operations
- โ Optimized database queries
- โ Rental expiry monitor (every 5 min)
- โ Expiring rental warnings (every 1 min)
- โ Cache warmer (hourly)
- โ Health check endpoints
src/
โโโ auth/ # Authentication (wallet + JWT)
โโโ users/ # User management
โโโ assets/ # Asset CRUD + on-chain
โโโ marketplace/ # Listings + rentals + on-chain
โโโ access-control/ # Access verification
โโโ games/ # Game registration + API keys
โโโ sdk/ # SDK endpoints + transformations
โโโ marketplace-packages/ # Developer marketplace
โโโ indexer/ # Event indexer (structure ready)
โโโ jobs/ # Background jobs
โโโ prisma/ # Database service
โโโ redis/ # Cache service
โโโ solana/ # Blockchain integration
โโโ common/ # Shared utilities
โโโ filters/ # Error handling
โโโ middleware/ # Rate limiting
โโโ health/ # Health checks
# 1. Install dependencies
npm install
# 2. Setup environment
cp .env.example .env
# Edit .env with your config
# 3. Copy IDL files
cp ../scrunchy-contract/target/idl/*.json src/idl/
# 4. Setup database
npm run prisma:generate
npm run prisma:migrate
# 5. Start server
npm run start:devVisit http://localhost:3000/api/docs for Swagger documentation.
POST /api/auth/nonce- Get noncePOST /api/auth/verify- Verify signatureGET /api/auth/me- Current user
GET /api/assets- List (with filters)GET /api/assets/:id- DetailsPOST /api/assets- Create (on-chain)POST /api/assets/sync/:mint- Sync from chain
GET /api/marketplace/listings- List listingsPOST /api/marketplace/listings- Create listingPUT /api/marketplace/listings/:id- Update listingPOST /api/marketplace/rentals- Rent assetPOST /api/marketplace/rentals/:id/complete- Complete rental
GET /api/access-control/verify/:mint/:wallet- Verify accessPOST /api/access-control/verify/batch- Batch verify
POST /api/games- Register gamePOST /api/games/:id/api-keys- Create API keyGET /api/games/:id/api-keys- List keysGET /api/games/:id/config- Get configPUT /api/games/:id/config- Update configGET /api/games/:id/config/history- Config historyPOST /api/games/:id/config/rollback- Rollback config
POST /api/sdk/check-access- Check accessGET /api/sdk/players/:wallet/assets- Player assetsGET /api/sdk/assets/:id- Get asset (transformed)POST /api/sdk/assets/batch- Batch get
GET /api/marketplace/packages- List packagesGET /api/marketplace/packages/:id- Package detailsPOST /api/marketplace/packages/:id/install- Install packageGET /api/marketplace/packages/installed- Installed packages
GET /health- Health check
- Modular Design: Each feature is a separate NestJS module
- Type Safety: Full TypeScript with Prisma types
- On-Chain Integration: Direct Anchor program interaction
- Caching Strategy: Redis for performance-critical endpoints
- Background Jobs: Automated rental monitoring and cache warming
- Rate Limiting: Per-API-key and per-user limits
- Error Handling: Global exception filter with structured responses
All configuration via environment variables (see .env.example):
- Database: PostgreSQL connection string
- Redis: Redis connection URL
- Solana: RPC URL and program IDs
- JWT: Secret and expiry
- Platform: Treasury wallet and fee settings
Complete Prisma schema with:
- Users, Games, Assets, Listings, Rentals
- Reviews, Analytics Events
- Game API Keys, Configuration History
- Marketplace Packages, Installations, Purchases
Game developers can:
- Register their game
- Create API keys
- Configure asset transformations (visuals, attributes, behaviors)
- Use SDK endpoints to check access and get player assets
- Install packages from developer marketplace
QUICK_START.md- Setup guideFINAL_IMPLEMENTATION_SUMMARY.md- Complete feature listIMPLEMENTATION_STATUS.md- Detailed status- Swagger UI at
/api/docs
- Set production environment variables
- Run database migrations:
npm run prisma:migrate - Build:
npm run build - Start:
npm run start:prod
- โ Asset creation with on-chain integration
- โ Full marketplace service
- โ Access control service
- โ Complete API key management
- โ Game configuration management
- โ SDK endpoints with transformations
- โ Developer marketplace module
- โ Error handling & validation
- โ Rate limiting middleware
- โ Background jobs
The backend is production-ready! ๐