> ## Documentation Index
> Fetch the complete documentation index at: https://docs.walletwall.org/llms.txt
> Use this file to discover all available pages before exploring further.

# WalletWall Flows

> Product boundary maps, Holder Wall preflight flow, Stable Seer provider flow, and CORS/API security posture diagrams.

# WalletWall Flows

These diagrams document WalletWall's product boundaries and security posture using the terracotta, cream, and stone visual language used across the app.

## Product Boundary Map

Stable Seer is the stablecoin and token/pool market intelligence surface (previously Market Radar). Holder Wall is holder and wallet analytics where supported. Stable Seer results must not be treated as holder analytics.

```mermaid theme={null}
flowchart TD
  walletInput[Wallet or token input]:::input
  coinMode[Coin mode]:::process
  holderWall[Holder Wall]:::process
  holderAnalytics[Wallet and holder analytics]:::output
  coinstellation[Coinstellation graph]:::output
  stableSeer[Stable Seer]:::process
  dexScreener[DEX Screener market data]:::external
  noHolderClaim[No holder analytics claim]:::risk

  walletInput --> coinMode
  coinMode --> holderWall
  holderWall --> holderAnalytics
  holderAnalytics --> coinstellation
  coinMode --> stableSeer
  stableSeer --> dexScreener
  dexScreener --> stableSeer
  stableSeer --> noHolderClaim

  classDef input fill:#FAFAF0,stroke:#B87333,color:#2B2118,stroke-width:1.5px;
  classDef process fill:#B84923,stroke:#6B2412,color:#FFF7E8,stroke-width:1.5px;
  classDef decision fill:#D6A85A,stroke:#8A5A1F,color:#2B2118,stroke-width:1.5px;
  classDef output fill:#9AAB89,stroke:#526246,color:#172014,stroke-width:1.5px;
  classDef risk fill:#8F2F1D,stroke:#5E1D12,color:#FFF7E8,stroke-width:1.5px;
  classDef datastore fill:#6F7068,stroke:#3C3D38,color:#FFF7E8,stroke-width:1.5px;
  classDef external fill:#A7B0B5,stroke:#59646A,color:#172014,stroke-width:1.5px;
  classDef security fill:#5A2418,stroke:#2B110B,color:#FFF7E8,stroke-width:1.5px;
```

## Holder Wall Preflight Flow

Holder Wall checks whether a usable wallet graph exists before navigating into Coinstellation. Provider and configuration failures should remain user-safe.

```mermaid theme={null}
flowchart TD
  input[User enters wallet]:::input
  providerCheck[Provider and config check]:::process
  preflight[Preflight holder graph]:::process
  usable{Usable graph?}:::decision
  openGraph[Open Coinstellation]:::output
  fallback[Show empty or fallback state]:::output
  warning[User-safe provider/config warning]:::risk

  input --> providerCheck
  providerCheck --> preflight
  providerCheck -->|provider/config failure| warning
  preflight --> usable
  usable -->|Yes| openGraph
  usable -->|No| fallback

  classDef input fill:#FAFAF0,stroke:#B87333,color:#2B2118,stroke-width:1.5px;
  classDef process fill:#B84923,stroke:#6B2412,color:#FFF7E8,stroke-width:1.5px;
  classDef decision fill:#D6A85A,stroke:#8A5A1F,color:#2B2118,stroke-width:1.5px;
  classDef output fill:#9AAB89,stroke:#526246,color:#172014,stroke-width:1.5px;
  classDef risk fill:#8F2F1D,stroke:#5E1D12,color:#FFF7E8,stroke-width:1.5px;
  classDef datastore fill:#6F7068,stroke:#3C3D38,color:#FFF7E8,stroke-width:1.5px;
  classDef external fill:#A7B0B5,stroke:#59646A,color:#172014,stroke-width:1.5px;
  classDef security fill:#5A2418,stroke:#2B110B,color:#FFF7E8,stroke-width:1.5px;
```

## Stable Seer Provider Flow

Stable Seer normalizes DEX Screener token and pool search results into WalletWall metadata. Success carries low confidence because the data is partial market data. Provider failure carries unavailable confidence. The API route is `/api/stable-seer`.

```mermaid theme={null}
flowchart TD
  query[Token query]:::input
  route["/api/stable-seer"]:::process
  provider[DEX Screener search]:::external
  normalize[Normalize provider response]:::process
  success[Success metadata: confidence low]:::output
  failure[Provider failure: confidence unavailable]:::risk
  boundary[holderAnalyticsSupported false]:::security

  query --> route
  route --> provider
  provider -->|200 response| normalize
  normalize --> success
  success --> boundary
  provider -->|error or timeout| failure
  failure --> boundary

  classDef input fill:#FAFAF0,stroke:#B87333,color:#2B2118,stroke-width:1.5px;
  classDef process fill:#B84923,stroke:#6B2412,color:#FFF7E8,stroke-width:1.5px;
  classDef decision fill:#D6A85A,stroke:#8A5A1F,color:#2B2118,stroke-width:1.5px;
  classDef output fill:#9AAB89,stroke:#526246,color:#172014,stroke-width:1.5px;
  classDef risk fill:#8F2F1D,stroke:#5E1D12,color:#FFF7E8,stroke-width:1.5px;
  classDef datastore fill:#6F7068,stroke:#3C3D38,color:#FFF7E8,stroke-width:1.5px;
  classDef external fill:#A7B0B5,stroke:#59646A,color:#172014,stroke-width:1.5px;
  classDef security fill:#5A2418,stroke:#2B110B,color:#FFF7E8,stroke-width:1.5px;
```

## CORS and API Security Posture

Production APIs stay same-origin by default. Future cross-origin browser read access requires an exact allowlist, never wildcard CORS or broad Vercel preview-domain trust.

```mermaid theme={null}
flowchart TD
  browser[Browser frontend]:::input
  sameOrigin[Same-origin /api requests]:::process
  vercel[Vercel serverless APIs]:::datastore
  localServer[Local dev server allowlist]:::security
  futureCors[Future CORS layer: exact ALLOWED_ORIGINS]:::security
  wildcard[Reject wildcard CORS]:::risk
  broadVercel[Reject broad *.vercel.app]:::risk
  auth[CORS is not auth]:::security

  browser --> sameOrigin
  sameOrigin --> vercel
  browser -->|local dev| localServer
  futureCors --> vercel
  wildcard -. blocked .-> futureCors
  broadVercel -. blocked .-> futureCors
  vercel --> auth

  classDef input fill:#FAFAF0,stroke:#B87333,color:#2B2118,stroke-width:1.5px;
  classDef process fill:#B84923,stroke:#6B2412,color:#FFF7E8,stroke-width:1.5px;
  classDef decision fill:#D6A85A,stroke:#8A5A1F,color:#2B2118,stroke-width:1.5px;
  classDef output fill:#9AAB89,stroke:#526246,color:#172014,stroke-width:1.5px;
  classDef risk fill:#8F2F1D,stroke:#5E1D12,color:#FFF7E8,stroke-width:1.5px;
  classDef datastore fill:#6F7068,stroke:#3C3D38,color:#FFF7E8,stroke-width:1.5px;
  classDef external fill:#A7B0B5,stroke:#59646A,color:#172014,stroke-width:1.5px;
  classDef security fill:#5A2418,stroke:#2B110B,color:#FFF7E8,stroke-width:1.5px;
```
