The service is responsible for fetching and aggregating Lido Staking Vaults data:
- Fetches vaults and reports from on-chain contracts and IPFS
- Calculates vault metrics based on on-chain and IPFS data
- Stores all processed data in PostgreSQL
It operates in two modes:
- API — exposes data to external consumers and frontend applications
- Worker — runs scheduled tasks for fetching reports, updating vault data, and recalculating metrics
- Node.js v24+
- PostgreSQL v15+
- Yarn package manager v1
This project requires an .env file which is distributed via private communication channels. A sample can be found in .env.example
Step 1. Copy the contents of .env.example to .env
cp sample.env .envStep 2. Fill out the .env.
Step 3. Install dependencies
yarn installStep 4. Build the APP and apply DB migrations
yarn build
yarn typeorm:migration:runStep 5.1. Start the API
yarn start:devStep 5.2. Start the Worker
yarn start:worker:devOr just run on the Docker
docker-compose down -v && docker-compose build --no-cache && docker-compose up --force-recreateStart the API
yarn build && yarn start:prodStart the Worker
yarn build && yarn start:workerTest characteristics:
- Controllers are tested in isolation.
- All external dependencies (database, contracts, IPFS, cron logic) are mocked.
- No real network, blockchain, or database access is required.
- Tests do not depend on environment variables.
E2E tests are fully self-contained and can be executed without an .env file:
yarn test:e2e
yarn test:e2e:coverageNote! This repo uses automatic versioning, please follow the commit message conventions.
e.g.
git commit -m "fix: a bug in calculation"
git commit -m "feat: dark theme"
To create a new release:
- Merge all changes to the
mainbranch. - After the merge, the
Prepare release draftaction will run automatically. When the action is complete, a release draft is created. - When you need to release, go to Repo → Releases.
- Publish the desired release draft manually by clicking the edit button - this release is now the
Latest Published. - After publication, the action to create a release bump will be triggered automatically.
Learn more about App Release Flow.