# Reference Implementations

ENSNode includes initial reference implementations of the [ENSDb standard](/docs/services/ensdb/concepts/glossary#ensdb-standard). This includes ENSIndexer as a reference ENSDb writer and ENSApi as a reference ENSDb reader. These are just a few examples of the ecosystem of tools and services that are possible when you build with ENSDb.

This initial reference implementation consists of three main components:

- An [ENSDb instance](/docs/services/ensdb/concepts/glossary#ensdb-instance) — A PostgreSQL database following the ENSDb standard.
- An [ENSIndexer instance](/docs/services/ensdb/concepts/glossary#ensindexer-instance) — A reference ENSDb Writer and ENSDb Metadata Writer implementation that writes data into the ENSDb instance.
- An [ENSApi instance](/docs/services/ensdb/concepts/glossary#ensapi-instance) — A reference ENSDb Reader implementation that serves GraphQL and REST APIs.

```mermaid
flowchart LR
    subgraph DeploymentEnv["Deployment Environment"]
        ENSIndexer[ENSIndexer instance]
        ENSApi[ENSApi instance]

        subgraph PostgreSQLServer["PostgreSQL Server instance"]
            ENSDb[(ENSDb instance)]
            NS(ENSNode Schema)
            EWS(ENSDb Writer Schema)

            ENSDb -->|has| NS
            ENSDb -->|has| EWS
        end
    end

    ENSIndexer -->|writes| ENSDb
    ENSApi -->|reads| ENSDb

```
**Build Your Own:** You can build custom ENSDb Writers, or ENSDb Readers. The [ENSDb
  standard](/docs/services/ensdb/concepts/glossary#ensdb-standard) is implementation-agnostic.