diff --git a/MIGRATION.md b/MIGRATION.md new file mode 100644 index 0000000..b01156d --- /dev/null +++ b/MIGRATION.md @@ -0,0 +1,62 @@ +# Pages to Workers Migration Guide + +## Background + +Cloudflare Pages does NOT support scheduled tasks (cron jobs). This project requires hourly syncing, so we migrated to Cloudflare Workers. + +## Setting Up Redirects + +To maintain backwards compatibility, configure the old Pages deployments to redirect to Workers. + +### For Mainnet Pages Project + +Create `_redirects` file in the Pages project root: + +``` +/api/* https://validators-api-main.workers.dev/api/:splat 301 +/* https://validators-api-main.workers.dev/:splat 301 +``` + +Deploy this file to `validators-api-mainnet` Pages project. + +### For Testnet Pages Project + +Create `_redirects` file in the Pages project root: + +``` +/api/* https://validators-api-test.workers.dev/api/:splat 301 +/* https://validators-api-test.workers.dev/:splat 301 +``` + +Deploy this file to `validators-api-testnet` Pages project. + +### Alternative: Dashboard Configuration + +Go to Cloudflare Dashboard → Pages → [Project] → Rules → Redirects: + +**Mainnet:** + +- Source: `/*` → Destination: `https://validators-api-main.workers.dev/$1` (301) + +**Testnet:** + +- Source: `/*` → Destination: `https://validators-api-test.workers.dev/$1` (301) + +## Verification + +Test redirects work: + +```bash +curl -I https://validators-api-mainnet.pages.dev/api/v1/status +# Should return 301 redirect to validators-api-main.workers.dev + +curl -I https://validators-api-testnet.pages.dev/api/v1/status +# Should return 301 redirect to validators-api-test.workers.dev +``` + +## Timeline + +1. Verify Workers fully operational +2. Deploy redirects to Pages projects +3. Monitor for 1-2 weeks +4. (Optional) Deprecate .pages.dev URLs and add custom domain diff --git a/README.md b/README.md index ad03225..eb8de7b 100644 --- a/README.md +++ b/README.md @@ -19,8 +19,8 @@

Dashboards

-Mainnet      -Testnet +Mainnet      +Testnet


@@ -43,7 +43,7 @@ If you operate a staking pool and want to be displayed in the Nimiq Wallet, foll 3. Review the [Description Guidelines](#recommendations-for-your-validator-description). 4. Learn about the [JSON Schema](#validator-json-schema). 5. Submit a PR to this repository. A Nimiq team member will review your submission within 3 days. -6. Once the PR is submitted, check that the [API endpoint](https://validators-api-mainnet.pages.dev/api/v1/validators) returns your information. This process may take a few minutes. +6. Once the PR is submitted, check that the [API endpoint](https://validators-api-main.workers.dev/api/v1/validators) returns your information. This process may take a few minutes. > [!WARNING] > Nimiq reserves the right to make minor adjustments to the content submitted by validator owners if necessary. @@ -113,13 +113,13 @@ The VTS is displayed in the Nimiq Wallet, allowing stakers to compare validators The Validators API provides endpoints to retrieve validator information for integration with tools, dashboards, and other applications. | Endpoint | Description | | -------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | -| [/api/v1/validators](https://validators-api-mainnet.pages.dev/api/v1/validators) | Retrieves the validator list. See [query params](./server/utils/schemas.ts#L54) | -| [/api/v1/validators/:validator_address](https://validators-api-mainnet.pages.dev/api/v1/validators/NQ7700000000000000000000000000000001) | Retrieves the validator information | -| [/api/v1/supply](https://validators-api-mainnet.pages.dev/api/v1/supply) | Retrieves supply status | +| [/api/v1/validators](https://validators-api-main.workers.dev/api/v1/validators) | Retrieves the validator list. See [query params](./server/utils/schemas.ts#L54) | +| [/api/v1/validators/:validator_address](https://validators-api-main.workers.dev/api/v1/validators/NQ7700000000000000000000000000000001) | Retrieves the validator information | +| [/api/v1/supply](https://validators-api-main.workers.dev/api/v1/supply) | Retrieves supply status | ## Validators Dashboard -The Validators Dashboard is a simple Nuxt application that displays all validators along with their scores. You can access the dashboard here: https://validators-api-mainnet.pages.dev/ +The Validators Dashboard is a simple Nuxt application that displays all validators along with their scores. You can access the dashboard here: https://validators-api-main.workers.dev/ > [!TIP] > Check also the [deployment](#deployment) section to learn how to access to the `testnet` and `preview` environments. @@ -215,13 +215,24 @@ Where `env`: `preview`, `testnet`, or `testnet-preview` (omit for mainnet produc **Environments** (configured in `wrangler.json`): -| Environment | Dashboard URL | Trigger | -| ----------------- | ------------------------------------------------------------------------------ | ------------------ | -| `production` | [Validators API Mainnet](https://validators-api-mainnet.pages.dev) | Push to `main` | -| `preview` | [Validators API Mainnet Preview](https://dev.validators-api-mainnet.pages.dev) | Push to any branch | -| `testnet` | [Validators API Testnet](https://validators-api-testnet.pages.dev) | Push to `main` | -| `testnet-preview` | [Validators API Testnet Preview](https://dev.validators-api-testnet.pages.dev) | Push to any branch | +| Environment | Dashboard URL | Trigger | +| ----------------- | ------------------------------------------------------------------------- | -------------------------------------- | +| `production` | [Validators API Mainnet](https://validators-api-main.workers.dev) | Manual `wrangler deploy` | +| `preview` | [Validators API Mainnet Preview](https://validators-api-main.workers.dev) | Manual deployment | +| `testnet` | [Validators API Testnet](https://validators-api-test.workers.dev) | Manual `wrangler deploy --env testnet` | +| `testnet-preview` | [Validators API Testnet Preview](https://validators-api-test.workers.dev) | Manual deployment | Each environment has its own D1 database, KV cache, and R2 blob. Sync runs hourly via Cloudflare cron triggers (see `server/tasks/sync/`). +### Deployment Migration + +Migrated from Cloudflare Pages to Workers for cron job support. + +**Old URLs (redirect to Workers):** + +- `validators-api-mainnet.pages.dev` → `validators-api-main.workers.dev` +- `validators-api-testnet.pages.dev` → `validators-api-test.workers.dev` + +Setup redirects per [MIGRATION.md](./MIGRATION.md). + **Write operations to `main` are restricted**, only via PR.