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

# Registry

> Project and app names, market sectors, and who runs what.

Two registry tables describe who runs what. Both come from the registry we author by hand, so a row exists because somebody wrote it down, not because we detected activity.

* `dimensions.projects`: one row per project.
* `dimensions.apps`: one row per app, meaning one deployed version of a protocol that a project runs, such as `uniswap-v3` or `hyperliquid-spot`.

## Tables

<Tabs>
  <Tab title="Projects">
    `dimensions.projects` contains one row per project: the protocol or company behind one or more live apps.

    <table>
      <thead>
        <tr>
          <th width="280">Column</th>
          <th width="130">Type</th>
          <th>Description</th>
        </tr>
      </thead>

      <tbody>
        <tr>
          <td><code>project\_id</code></td>
          <td><code>STRING</code></td>
          <td>Identifier of the project. Every table that mentions a project joins on this.</td>
        </tr>

        <tr>
          <td><code>name</code></td>
          <td><code>STRING</code></td>
          <td>Display name.</td>
        </tr>

        <tr>
          <td><code>symbol</code></td>
          <td><code>STRING</code></td>
          <td>Ticker of the project's token, where one exists.</td>
        </tr>

        <tr>
          <td><code>market\_sectors</code></td>
          <td><code>ARRAY\<STRING></code></td>
          <td>Every market sector tag the project carries.</td>
        </tr>

        <tr>
          <td><code>primary\_market\_sector</code></td>
          <td><code>STRING</code></td>
          <td>The first element of <code>market\_sectors</code>. One value per row.</td>
        </tr>
      </tbody>
    </table>
  </Tab>

  <Tab title="Apps">
    `dimensions.apps` holds one row per app, meaning one deployed version of a protocol that a project runs, such as `uniswap-v3` or `hyperliquid-spot`. A project can run several apps, and an app's numbers add up into its project's.

    <table>
      <thead>
        <tr>
          <th width="280">Column</th>
          <th width="130">Type</th>
          <th>Description</th>
        </tr>
      </thead>

      <tbody>
        <tr>
          <td><code>app\_id</code></td>
          <td><code>STRING</code></td>
          <td>Identifier of the app. Every table that mentions an app joins on this.</td>
        </tr>

        <tr>
          <td><code>project\_id</code></td>
          <td><code>STRING</code></td>
          <td>Project that runs the app.</td>
        </tr>

        <tr>
          <td><code>name</code></td>
          <td><code>STRING</code></td>
          <td>Display name.</td>
        </tr>

        <tr>
          <td><code>market\_sectors</code></td>
          <td><code>ARRAY\<STRING></code></td>
          <td>Every market sector tag the app carries.</td>
        </tr>

        <tr>
          <td><code>created\_at</code></td>
          <td><code>TIMESTAMP</code></td>
          <td>When the app was added to the registry.</td>
        </tr>
      </tbody>
    </table>
  </Tab>
</Tabs>

## Sample queries

<Tabs>
  <Tab title="Project identity">
    **Look up one project's identity and sectors.**

    ```sql theme={null}
    select
        project_id,
        name,
        symbol,
        primary_market_sector,
        market_sectors
    from `dimensions.projects`
    where project_id = 'uniswap'
    ```
  </Tab>

  <Tab title="Projects by sector">
    **Count projects per primary market sector.**

    ```sql theme={null}
    select
        primary_market_sector,
        count(*) as projects
    from `dimensions.projects`
    group by primary_market_sector
    order by projects desc
    ```
  </Tab>

  <Tab title="Apps for one project">
    **List every app one project runs.**

    ```sql theme={null}
    select
        app_id,
        name,
        market_sectors,
        created_at
    from `dimensions.apps`
    where project_id = 'hyperliquid'
    order by app_id
    ```
  </Tab>
</Tabs>

## Notes

`market_sectors` is a list, so joining through `unnest(market_sectors)` yields one row per tag. A daily table joined that way counts a project once for every tag it carries, and any total you take off it comes out too high. The hazard is built into the shape of the query, whatever the tagging holds.

Grouping by `primary_market_sector` keeps one row per project however the tagging changes later. [Metrics](/docs/catalog/projects/metrics) shows the sector totals this protects.
