> For the complete documentation index, see [llms.txt](https://docs.novamp.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.novamp.io/developers/architecture.md).

# Architecture

How Novamp's data plane fits together: one indexer per chain, a branded proxy that fans out across them, and a low-level RPC/data layer — all serving the read-only Public Data API.

> **One indexer per chain. One proxy that unifies them. One read-only API.**

{% hint style="info" %}
Novamp's data plane answers one question: *"what launched, and how is it trading?"* — across every supported chain. Identity protection (*"is this `Name + Ticker` allowed?"*) is a separate concern powered by AntiVamp; see [Identity Protection](/developers/identity-protection.md).
{% endhint %}

## The big picture

```mermaid
flowchart TB
  subgraph Clients
    T[Terminals / bots]
    A[Aggregators]
    U[Novamp app]
  end

  subgraph DataPlane["Novamp Public Data API"]
    PX[app.novamp.io/api proxy]
    IRHC[RHC indexer 4663]
    IBASE[Base indexer 8453]
    IBNB[BNB indexer 56]
    IETH[ETH indexer 1]
    ISOL[Solana indexer]
    RPC[RPC / data proxy]
  end

  subgraph Chains["Supported chains"]
    C1[Robinhood 4663]
    C2[Base 8453]
    C3[BNB 56]
    C4[Ethereum 1]
    C5[Solana]
  end

  T --> PX
  A --> PX
  U --> PX
  PX --> IRHC & IBASE & IBNB & IETH & ISOL
  PX --> RPC
  IRHC --> C1
  IBASE --> C2
  IBNB --> C3
  IETH --> C4
  ISOL --> C5
  RPC --> C1 & C2 & C3 & C4 & C5
```

## Per-chain indexers (the data plane)

Novamp runs **one indexer service per chain**. Each service only knows about launches on its own chain and exposes an identical REST surface.

| Chain           | Chain ID | Role                                         |
| --------------- | -------- | -------------------------------------------- |
| Robinhood Chain | `4663`   | Per-chain indexer                            |
| Base            | `8453`   | Per-chain indexer                            |
| BNB Smart Chain | `56`     | Per-chain indexer                            |
| Ethereum        | `1`      | Per-chain indexer                            |
| Solana          | `solana` | Per-chain indexer (server-prepared launches) |

* **Aggregated reads** — the `app.novamp.io/api` host proxies `/api/*` to the correct per-chain indexer, and cross-chain endpoints (`/api/tokens`, `/api/discovery`, `/api/search`, `/api/ticker/availability`) fan out across chains and merge results.
* **Chain-scoped reads** — `/api/tokens/:chainId/:address` only resolves a token whose `chainId` matches the indexer serving it. See the [Public Data API](/developers/public-api.md).

## The RPC / data proxy

A low-level data layer sits alongside the indexers for multi-chain helpers that don't fit the token feed:

* `GET /api/data/chains` — supported chains and their config.
* `POST /api/data/rpc/:chain` — proxied JSON-RPC for a chain.
* `GET /api/data/market/token/:chain/:address` — market data for a token.
* `GET /api/data/portfolio` — wallet portfolio across chains.

This lets clients read chain state through one branded host instead of managing per-chain RPC endpoints and keys themselves.

## Launch paths differ by chain family

* **EVM launches are transaction-based.** The client sends a transaction to `NovampLaunchFactory.launch(p)`; the chain's indexer picks it up. There is **no** server-side EVM launch endpoint.
* **Solana launches are server-prepared.** The API builds an unsigned transaction (`/api/launch/pumpfun/prepare`) for the client to sign, then confirms it.

## Reads vs. writes

The Public Data API is fundamentally a **read plane**. The only writes it exposes are the Solana launch-preparation endpoints (which return an unsigned transaction for the client to sign) and a handful of operational routes gated by internal headers. Everything else is a `GET`.

## Continue exploring

* [🧑‍💻 Developer Overview](/developers/overview.md)
* [🔑 Authentication](/developers/authentication.md)
* [🌐 Environments](/developers/environments.md)
* [📡 Public Data API](/developers/public-api.md)
* [📜 Contract Addresses](/protocol/contracts-and-addresses.md)
* [🛡️ Identity Protection](/developers/identity-protection.md)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.novamp.io/developers/architecture.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
