Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,17 @@ jobs:
app: tokenlist
environments: '[""]'

deploy-reth-snapshots-viewer:
name: Deploy Reth Snapshots Viewer
needs: verify
uses: ./.github/workflows/deploy.yml
secrets:
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
with:
app: reth-snapshots-viewer
environments: '[""]'

deploy-tempo-snapshots-viewer:
name: Deploy Tempo Snapshots Viewer
needs: verify
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/pull-request.yml
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,7 @@ jobs:
#### other (single-env-apps)
- app: og
- app: perf
- app: reth-snapshots-viewer
- app: tempo-snapshots-viewer
- app: tokenlist
env:
Expand Down
2 changes: 2 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@ This is a **TypeScript monorepo** for applications on the Tempo blockchain appli
| `apps/tokenlist` | Token registry API |
| `apps/contract-verification` | Smart contract verification |
| `apps/og` | OpenGraph image generation |
| `apps/reth-snapshots-viewer` | Reth snapshots viewer |
| `apps/tempo-snapshots-viewer` | Tempo snapshots viewer |

## Commands

Expand Down
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ Monorepo for Tempo Apps
| [`apps/contract-verification`](apps/contract-verification) | Smart contract verification service | [`contracts.tempo.xyz`](<https://contracts.tempo.xyz>) |
| [`apps/key-manager`](apps/key-manager) | WebAuthn key management service | [`keys.tempo.xyz`](<https://keys.tempo.xyz>) |
| [`apps/og`](apps/og) | OpenGraph image generation worker | [`og.tempo.xyz`](<https://og.tempo.xyz>) |
| [`apps/reth-snapshots-viewer`](apps/reth-snapshots-viewer) | Reth snapshots viewer | [`snapshots.reth.rs`](<https://snapshots.reth.rs>) |
| [`apps/tempo-snapshots-viewer`](apps/tempo-snapshots-viewer) | Tempo snapshots viewer | [`snapshots.tempoxyz.dev`](<https://snapshots.tempoxyz.dev>) |

## Contributing
Expand Down
51 changes: 51 additions & 0 deletions apps/reth-snapshots-viewer/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
# Reth Snapshots Viewer

Cloudflare Worker that displays Reth snapshots stored in R2, including legacy single-archive snapshots and v2 modular manifests.

## Prerequisites

- R2 bucket `reth-snapshots` with public domain at `snapshots-r2.reth.rs`
- Monorepo dependencies installed from the repository root with `pnpm install`

## Setup

```bash
pnpm install
pnpm --filter reth-snapshots-viewer gen:types
```

Worker configuration lives in `wrangler.json`.

## Development

```bash
pnpm --filter reth-snapshots-viewer dev # Local development at http://localhost:8787
```

## Deployment

```bash
pnpm --filter reth-snapshots-viewer deploy # Deploys to snapshots.reth.rs
```

## Project Structure

```
reth-snapshots-viewer/
├── src/
│ └── index.ts # Main Worker logic
├── wrangler.json # Worker configuration
├── package.json # Dependencies
├── tsconfig.json # TypeScript config
├── worker-configuration.d.ts
└── README.md # This file
```

## How It Works

1. The worker scans the bucket for both legacy root-level metadata files and v2 snapshot directories containing `manifest.json`.
2. It normalizes every snapshot into one API shape, groups them by profile/channel, and caches the result at the edge.
3. The UI lets users filter by chain ID, profile, channel, and date.
4. Modular snapshots expose component-size presets for minimal, full, and archive node bootstrapping.

API endpoint: `/api/snapshots` returns the normalized snapshot list without raw manifest payloads.
30 changes: 30 additions & 0 deletions apps/reth-snapshots-viewer/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
{
"name": "reth-snapshots-viewer",
"type": "module",
"private": true,
"repository": {
"type": "git",
"directory": "apps/reth-snapshots-viewer",
"url": "https://github.com/tempoxyz/tempo-apps"
},
"scripts": {
"build": "echo 'No build step needed for Cloudflare Worker'",
"check": "pnpm check:biome && pnpm check:types",
"check:biome": "biome check --write --unsafe",
"check:types": "tsgo --project tsconfig.json --noEmit",
"dev": "wrangler dev",
"deploy": "wrangler deploy",
"gen:types": "wrangler types --env-interface='CloudflareBindings'",
"postinstall": "pnpm gen:types"
},
"dependencies": {
"hono": "catalog:"
},
"devDependencies": {
"@biomejs/biome": "catalog:",
"@cloudflare/workers-types": "catalog:",
"@types/node": "catalog:",
"typescript": "catalog:",
"wrangler": "catalog:"
}
}
Loading
Loading