Quick start
- Copy
.env.exampleto.env.localand setDATABASE_URL,AUTH_SECRETandNEXT_PUBLIC_APP_URL. npm installthennpm run db:pushto create the schema.npm run devand openhttp://localhost:9600.
Robinhood Chain (featured, key-free)
Chain id 4663. ETH balances come from the public RPC; every Stock Token in the official registry (api.robinhood.com/rhj/assets) is checked with one Multicall3 balanceOf round-trip and quoted from /rhj/prices/{symbol}. Other tokens, NFTs and transfers are read from Robinhood Blockscout on a best-effort basis. Locally, if your ISP hijacks robinhood.com, set RESOLVE_OVERRIDE to pin the hosts.
External APIs
| Key | Provider | Needed for |
|---|---|---|
ROBINHOOD_RPC_URL | Robinhood Chain | Optional RPC override; default public endpoint, no key |
ALCHEMY_API_KEY | Alchemy | ERC-20 / NFT discovery, transfers, NFT floors (EVM) |
MORALIS_API_KEY | Moralis | Alternative EVM discovery and history |
HELIUS_API_KEY | Helius | Solana SPL / NFT metadata (DAS) and decoded history |
COINGECKO_API_KEY | CoinGecko | Optional; raises rate limits for prices |
POKEMON_TCG_API_KEY | Pokémon TCG API | Optional; raises rate limits for card lookups |
AUTH_RESEND_KEY | Resend | Email magic-link sign-in |
NEXT_PUBLIC_WALLETCONNECT_PROJECT_ID | Reown / WalletConnect | Mobile wallet pairing |
Architecture
src/lib/chains/*— one adapter per chain implementingChainAdapter(discover, activity, tokenInfo, balanceOf). Register new chains insrc/lib/chains/index.ts.src/lib/sources— the source engine; every external value is stored as anAssetSourcerow with provider, timestamp and URL.src/lib/valuation— typed valuations (market, floor, user, last sale, external).src/lib/privacy— AES-256-GCM field encryption and HMAC blind indexes.src/lib/collectibles— collectible database providers behind one interface.
Private API
All routes require a session and respond with { ok, data } or { ok:false, error }.
| Method | Route | Purpose |
|---|---|---|
| POST | /api/auth/wallet/nonce | Issue a wallet sign-in challenge |
| GET/POST | /api/wallets | List / link wallets |
| POST | /api/wallets/:id/sync | Read-only on-chain discovery |
| GET/POST | /api/assets | List assets / add a manual asset |
| GET/PATCH/DELETE | /api/assets/:id | Asset detail / edit private data / delete |
| POST | /api/assets/:id/verify | Re-verify balance or ownership on-chain |
| POST | /api/assets/tokenized | Import a tokenized asset by contract |
| GET | /api/collectibles/search | Search collectible catalogs |
| GET | /api/portfolio | Portfolio summary with valuation breakdown |
| POST | /api/portfolio/revalue | Refresh market valuations |
| GET/POST | /api/snapshots | Private ownership snapshots |
| GET | /api/search?q= | Global vault search |
| GET/POST | /api/watchlist | Watchlist |
| GET | /api/activity | Activity feed with sources |
| GET | /api/sources | Source coverage across the vault |