Note rindexer is brand new and actively under development, things will change and bugs will exist - if you find any bugs or have any feature requests please open an issue on github.
rindexer is an opensource powerful, high-speed indexing toolset developed in Rust, designed for compatibility with any EVM chain. This tool allows you to index chain events using a simple YAML file, requiring no additional coding. For more advanced needs, the rindexer provides foundations and advanced capabilities to build whatever you want. It's highly extendable, enabling you to construct indexing pipelines with ease and focus exclusively on the logic. rindexer out the box also gives you a GraphQL API to query the data you have indexed instantly.
You can get to the full rindexer documentation.
curl -L https://rindexer.xyz/install.sh | bash
If you’re on Windows, you will need to install and use Git BASH or WSL, as your terminal, since rindexer installation does not support Powershell or Cmd.
Once installed you can run rindexer --help
in your terminal to see all the commands available to you.
rindexer --help
Blazing fast EVM indexing tool built in rust
Usage: rindexer [COMMAND]
Commands:
new Creates a new rindexer no-code project or rust project
start Start various services like indexers, GraphQL APIs or both together
add Add elements such as contracts to the rindexer.yaml file
codegen Generates rust code based on rindexer.yaml or graphql queries
delete Delete data from the postgres database or csv files
phantom Use phantom events to add your own events to contracts
help Print this message or the help of the given subcommand(s)
Options:
-h, --help Print help
-V, --version Print version
We have full documentation https://rindexer.xyz/docs/introduction/installation which goes into more detail on how to use rindexer and all the commands available to you.
There's a pre-built docker image which can be used to run rindexer
inside your dockerized infra:
ghcr.io/joshstevens19/rindexer
To create a new no-code
project in your current directory, you can run the following:
docker run -it -v $PWD:/app/project_path ghcr.io/joshstevens19/rindexer new -p /app/project_path no-code
To use it with an existing project and a running postgres instance you can simply invoke:
export PROJECT_PATH=/path/to/your/project
export DATABASE_URL="postgresql://user:pass@postgres/db"
docker-compose up -d
This will start all local indexing and if you have enabled the graphql endpoint, it will become exposed under:
We also provide a Helm chart for deploying rindexer
in Kubernetes environments. The Helm chart simplifies the deployment process and allows for easy customization of the deployment parameters.
You can find the Helm chart in the following directory:
To use the Helm chart, follow the instructions in the Helm Chart README to deploy rindexer
to your Kubernetes cluster.
rindexer supports any EVM chain out of the box. If you have a custom chain, you can easily add support for it by adding the chain's RPC URL to the YAML configuration file and defining the chain ID. No code changes are required.
This is the core of rindexer, it contains all the logic for indexing and where most the code lives.
This is the cli for rindexer, it contains all the logic for the cli and is how users interact with rindexer.
This is the express project which leverages postgraphile rindexer GraphQL, we package it into a binary and run it within the rindexer to avoid having to have node/postgraphile installed on the machine running it.
This is the documentation for rindexer, it is built using voc which is an incredible
tool to build documentation. Big shout out to wevm
team for all the work they have done on vocs
, viem
and wagmi
.
This just holds some no-code examples for rindexer which is referenced in the docs or used for new users to see how a project is setup.
To build locally you can just run cargo build
in the root of the project. This will build everything for you
as this is a workspace.
To build for prod you can run make prod_build
this will build everything for you and optimise it for production.
you can run cargo fmt
to format the code, rules have been mapped in the rustfmt.toml
file.
Anyone is welcome to contribute to rindexer, feel free to look over the issues or open a new one if you have any new ideas or bugs you have found.
You can use the make
commands to run the CLI commands locally, this is useful for testing and developing.
These are located in the cli
folder > Makefile
. It uses CURDIR
to resolve the paths for you, so they should work
out of the box. The examples repo has a rindexer_demo_cli
folder which you can modify (please do not commit any changes though)
or spin up a new no-code project using the make commands.
To release a new rindexer you have to do a few things:
1) Checkout release/x.x.x branch depending on the next version number 2) Update the changelog in documentation/docs/pages/docs/introduction/changelog.mdx 3) Open up the cli folder and go to the Cargo.toml and update the version number 4) Push the branch up to GitHub which will queue a build on the CI 5) Once the build is successful you can open a PR merging the release branch into master 6) Merge will auto deploy the release