A custom Sui indexer for the EVE Frontier world contracts. It processes Sui blockchain checkpoints and projects on-chain state into a PostgreSQL database, making it queryable for front-end services, analytics, and other downstream systems.
Note
This is an unofficial, fan-made tool. It is not affiliated with, endorsed by, or associated with Fenris Creations or EVE Frontier.
This project is still under active development. Interfaces and configuration options may change between releases.
If you are only looking for an indexer that covers the world contracts and dont intend to customize it in any way then the indexer is available as a docker container from Github Container Registry. Please see the Getting Started guide for an example of how it can be deployed.
The easiest way to start the indexer is using the provided Docker Compose stack, which includes both the indexer and a TimescaleDB instance.
git clone https://github.com/Algo-Net/Frontier-Indexer.git
cd Frontier-IndexerCopy the sample environment file to create your local configuration:
cp .env.sample .envYou can edit .env to change database credentials, the target Sui network (mainnet or testnet), or the specific data packages you wish to index.
Use the provided helper script to start the containers:
./scripts/compose.sh up -dThe helper script auto-detects docker compose, podman compose, or podman-compose. To force a specific runtime, set CONTAINER_RUNTIME:
CONTAINER_RUNTIME=podman ./scripts/compose.sh up -d
CONTAINER_RUNTIME=podman-compose ./scripts/compose.sh up -dThe indexer will wait for the database to become ready and then automatically apply all necessary schema migrations.
To validate the stack end-to-end, run the smoke test. It validates the compose configuration, builds the indexer image, waits for the database, checks the metrics endpoint on port 9184, verifies the indexer schema exists, and then tears the stack down again.
./scripts/compose.sh smoke-testThe compose stack publishes PostgreSQL on port 5432 and Prometheus metrics on port 9184 for local inspection.
If you prefer to run the containers without using compose or the script, the equivalent manual flow still works. The recommended database image remains docker.io/timescale/timescaledb-ha:pg17:
docker network create frontierdocker run -d --network frontier \
--name timescaledb \
-e POSTGRES_USER=postgres \
-e POSTGRES_PASSWORD=postgres \
-e POSTGRES_DB=postgres \
-p 5432:5432 \
docker.io/timescale/timescaledb-ha:pg17Then start the indexer container:
INDEXER_VERSION=$(curl -s https://api.github.com/repos/Algo-Net/Frontier-Indexer/releases/latest | grep '"tag_name"' | sed 's/.*"tag_name": *"\(.*\)".*/\1/')
docker run --rm --network frontier \
--name frontier-indexer \
-e DB_HOST=timescaledb \
-e DB_NAME=postgres \
-e DB_USER=postgres \
-e DB_PASSWORD=postgres \
-e DB_SCHEMA=indexer \
-e SUI_NETWORK=testnet \
ghcr.io/algo-net/frontier-indexer:$INDEXER_VERSIONAll behaviour is controlled through environment variables. See Container Configuration for the full list of available options.
The indexer is designed to be extended with application-specific additions for your own smart contracts. The PACKAGES environment variable controls which package groups are indexed (world, app, or both). Application-specific additions go in the App sections of the project to allow for clean updates as the world contracts change over time.
For a full explanation of the handler system, package filtering, and how the indexer interacts with the world contracts, see the Developer Documentation:
Contributions to the project are welcomed as long as they stay within the scope of indexing official EVE Frontier data sources into a unified dataset or improving the implementation of this indexer. If you are unsure if your additions or improvements fit this criteria please create an issue or reach out to Ocky in the official EVE Frontier discord.
- Rust (version specified in
Dockerfile, currently1.90.0) - libpq-dev (PostgreSQL client library, required to compile the
dieselpostgres driver — install viaapt-get install libpq-devor equivalent) - TimescaleDB (
timescale/timescaledb-ha:pg17is the recommended container) - Diesel CLI
-
Clone the repository:
git clone https://github.com/Algo-Net/Frontier-Indexer.git cd Frontier-Indexer -
Copy your environment config (or export the variables directly):
cp .env.sample .env # edit .env with your database credentials and network settings -
Run the indexer:
cargo run
For information on adding database migrations, see Database and Models.