The Orcfax Status Index is a Node.js server that monitors and tracks Orcfax validator licenses, FACT token holdings, and system notifications for the Orcfax network. It provides automated tracking of license transfers, FACT token balances, and system status updates through various data sources.
It serves as the backend for the Orcfax Status Dashboard and the Orcfax RSS Feed.
- Monitors Orcfax validator license transfers on the Cardano blockchain
- Tracks license holder information and wallet addresses
- Maintains historical records of license ownership
- Monitors NFT marketplace listings for licenses
- Tracks FACT token holdings for license holders
- Calculates average FACT holdings during the ITN snapshot period
- Monitors minimum FACT holding requirements
- Updates holder multiplier statuses
- Monitors and syncs incident reports and network updates from GitHub
- Monitors and syncs blog posts from Medium
- Maintains and indexes an RSS Feed for the Orcfax Status Dashboard
- Captures daily snapshots of FACT holdings during the ITN period
- Ran from April 22, 2024, to December 1, 2024
- Calculates cumulative averages for multiplier qualifications
The application is built using:
- TypeScript
- Node.js
- Express.js
- PocketBase (database)
- Docker
- Blockfrost API (Cardano blockchain data)
- GitHub API (incident reports and network updates)
- Medium RSS Feed (blog posts)
- Clone this repository
- Get a local version of PocketBase running on your machine by following the docs
- Create necessary base collections in pocketbase (to be included in repo soon)
- Create an
.env
file in the root of the project based on the.env.example
file - Add the following environment variables to your
.env
:NODE_ENV=development DB_HOST=http://127.0.0.1:8090 DB_EMAIL=your_admin_email DB_PASSWORD=your_admin_password FACT_TOKEN_HEX=your_fact_token_hex LICENSE_NFT_POLICY_ID=your_license_policy_id BLOCKFROST_WEBHOOK_AUTH_TOKEN=your_blockfrost_webhook_token BLOCKFROST_PROJECT_ID=your_blockfrost_project_id DISCORD_WEBHOOK_URL=your_discord_webhook_url INCIDENT_REPORTS_REPO_URL=your_github_repo_url MEDIUM_RSS_FEED_URL=your_medium_rss_feed_url
- Run
docker-compose up --build
to build the Docker image and start the development container
The application runs several automated tasks:
-
Validator Sync
- Updates license holder information
- Processes any license transfers
- Updates FACT holdings
-
RSS Sync
- Checks for new incident reports
- Checks for new network updates
- Checks for new blog posts
- Updates notification statuses
-
ITN Snapshot
- Captures FACT holdings for all license holders
- Updates multiplier qualifications
- Calculates cumulative averages
- POST
/api/license
- Receives Blockfrost webhook events for license transfers
- Authenticates using Blockfrost signature
- Processes license transfers and updates holder information
The application includes comprehensive error handling and logging:
- Winston logger for structured logging
- Discord webhook integration for production error notifications
- Detailed error tracking and reporting
- Rate limiting and retry mechanisms for external APIs
The repository includes both production and development Docker configurations:
Dockerfile
- Production buildDockerfile.dev
- Development build with hot-reloadingdocker-compose.yml
- Local development setup
This project is licensed under the Apache License 2.0 - see the LICENSE.txt file for details.