The live page is /.
Tabs and
collection cards push ?view= and ?creator=,
so the browser Back button returns to the previous view. The page
lives in web/src/components/algorand/mountTracker.ts in this
repo. Its data comes from CorvidLabs' hosted tracker API.
What it tracks
The stored feed is cursor-paginated from the hosted tracker API. The
browser walks up to 30 pages of 200 rows on the first load, then keeps
that history while refreshes fetch only the newest page. Assets and
collections summarize the loaded ledger history, not a wallet's holdings.
Home shows Nevermore or Baby Jay and the two strongest
other collections with sales today, then a few recent sales.
Graphs is the volume and the daily chart. The Collections list keeps
one OG Donkeys card first, for four mint wallets of one set.
Opening a collection shows its pieces. Sales for that collection
are the other tab on that page (?pane=sales), not the
site Sales view.
Nevermore also uses its baked
catalog for collection art and its known asset count.
Sale confidence and currencies
The tracker classifies sales and supplies confirmed, likely, or inferred confidence. The page preserves those classifications, including sales below 1 ALGO. Payments in other assets show their currency asset ID; charts and ALGO volume include only ALGO payments. A bundle can have multiple sale rows sharing one transaction link.
If the hosted API is unavailable and the page has no stored sales to keep, the page labels its public indexer fallback. A failed refresh leaves stored sales and the server-rendered page in place. That smaller recent-block sample includes 1/1 transfers and mints. Its browser classifier infers sales from grouped transfers and payments of at least 1 ALGO, excluding known listing fees. Its coverage and classification differ from the stored ledger.
Images
The browser enriches sales with cached public indexer metadata.
Artwork is always served by Shiny: Nevermore images are embedded under
/nevermore/, and other thumbnails use
/tracker-art/{assetId} when the sales row has a picture.
That route resolves stored asset metadata
into a signed /media/ URL. The server handles ARC-3 / ARC-19
resolution and gateway fallback. Unknown or unavailable artwork keeps
its placeholder; the sale remains visible.
API
The page requests /v1/sales?limit=200 and maps
the returned sales array into its views. The API's 200-row
page size is not a 200-sale ceiling: the page follows
next_cursor with a short delay between requests, then builds
its totals and charts from the cursor walk. If a walk is interrupted, the
UI labels the history partial instead of presenting it as all-time data.
| Path | Returns |
|---|---|
GET /v1/health | Service health |
GET /v1/sales | Sales and optional next_cursor |
GET /v1/sales/{id} | One sale |
GET /v1/assets/{assetId}/sales | Asset sales |
GET /v1/wallets/{address}/sales | Wallet sales |
GET /v1/collections/{collection}/sales | Collection sales |
GET /v1/marketplaces | Supported marketplaces |
The public page uses anonymous access. The hosted API currently provides 30 days of history with a 60-second delay and 1,000 calls per day. Polling every two minutes uses about 720 calls per day for one continuously open page. Refreshes fetch only the newest page; the first history walk is capped at 30 pages of 200 rows and merged into the browser cache. Other tabs and clients sharing its quota can still reach the limit. Provider credentials stay server-side; no paid key is embedded in this static site.
Using the hosted API
This is a hosted public feed. Visitors do not need to run or deploy the
tracker service. The page uses the same-origin API at
/v1/; provider credentials and ingestion services
remain server-side and are never exposed to the browser.
Operations
Shiny serves this tracker and its API from the same application. Provider credentials and ingestion stay on the server.