Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
0ddc836
Merge pull request #139 from ssvlabs/fix/remove-sunset-banner
IlyaVi Apr 27, 2025
8c21336
Merge pull request #141 from ssvlabs/v2
sumbat-ssvlabs May 21, 2025
9b953f4
ci: fix env variable
sumbatx15 May 21, 2025
50da3da
ci: fixed env issue
sumbatx15 May 21, 2025
4b66a82
Merge pull request #142 from ssvlabs/ci/env-fix
sumbat-ssvlabs May 21, 2025
a93803c
fix: small cleanup
IlyaVi May 21, 2025
405886f
Merge pull request #143 from ssvlabs/fix/small-cleanup
IlyaVi May 21, 2025
1d1e119
feat: added dockerfile and updated github actions yaml to lint and bu…
IlyaVi May 21, 2025
7f7de6c
Merge pull request #144 from ssvlabs/feat/dockerfile-and-updated-gith…
IlyaVi May 21, 2025
fe31f25
test CI
vaclav-ssvlabs May 23, 2025
fc33951
Merge pull request #145 from ssvlabs/test-ci
vaclav-ssvlabs May 23, 2025
5bb62a9
test CI 2
vaclav-ssvlabs May 23, 2025
5d89b8d
Merge pull request #146 from ssvlabs/test-ci2
vaclav-ssvlabs May 23, 2025
ac50682
fix: fixed project build for docker
IlyaVi May 27, 2025
aebe3b5
Merge pull request #148 from ssvlabs/fix/docker-build-fix
IlyaVi May 27, 2025
51ee534
fix: owner address filter
sumbat-ssvlabs May 29, 2025
13aefd4
fix: operator card performance icon
sumbat-ssvlabs May 29, 2025
6b47847
fix: typo in global search
sumbat-ssvlabs May 29, 2025
b749db5
fix: operator search clearOnDefault true
sumbat-ssvlabs May 29, 2025
2b829c9
fix: operator card name is link
sumbat-ssvlabs May 29, 2025
8b4ddbd
fix: added operator tooltip in validators table
sumbatx15 Jun 3, 2025
8e0955d
fix: added operator tooltip for cluster table
sumbatx15 Jun 3, 2025
ffe0110
fix: added metadata
sumbatx15 Jun 4, 2025
d1232e1
ci: added site url env var
sumbatx15 Jun 5, 2025
ade06c8
chore: og picture
sumbatx15 Jun 5, 2025
3cd1281
fix: filters
sumbatx15 Jun 5, 2025
a4b5f19
fix: added twitter and og image for operator page
sumbatx15 Jun 5, 2025
89db7a4
ci: added skip validation for the lint
sumbatx15 Jun 5, 2025
13b8eb2
Merge pull request #149 from ssvlabs/issues/v2
sumbat-ssvlabs Jun 5, 2025
13f321d
Adjust repo for CI
vaclav-ssvlabs May 27, 2025
bd9a2f6
Merge branch 'stage' into stage-ci
vaclav-ssvlabs Jun 9, 2025
2d6ec5a
Merge pull request #152 from ssvlabs/stage-ci
IlyaVi Jun 9, 2025
f0cb527
ci: fixed dockerfile (#153)
sumbat-ssvlabs Jun 9, 2025
0aea2a7
Features/accounts (#159)
sumbat-ssvlabs Jun 10, 2025
945c7e9
refactor: table columns (progress)
sumbat-ssvlabs Jun 12, 2025
0c25518
Merge branch 'v2' of https://github.com/ssvlabs/ssv-explorer into ref…
sumbat-ssvlabs Jul 13, 2025
d923caa
fix: operator consensus breakdown
sumbat-ssvlabs Jul 13, 2025
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
12 changes: 12 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
node_modules
.git
.next
.vscode
.idea
*.log
npm-debug.log*
.DS_Store
.env
README.md
Dockerfile*
.dockerignore
3 changes: 3 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
SSV_NETWORKS='[{"networkId":560048,"apiVersion":"v4","apiNetwork":"hoodi","api":"https://api.stage.ops.ssvlabsinternal.com/api","explorerUrl":"https://hoodi.explorer.ssv.network","insufficientBalanceUrl":"https://faucet.ssv.network","googleTagSecret":"GTM-K3GR7M5","tokenAddress":"0x9F5d4Ec84fC4785788aB44F9de973cF34F7A038e","setterContractAddress":"0x58410Bef803ECd7E63B23664C586A6DB72DAf59c","getterContractAddress":"0x5AdDb3f1529C5ec70D77400499eE4bbF328368fe"}]'
NEXT_PUBLIC_SSV_NETWORKS='[{"networkId":560048,"apiVersion":"v4","apiNetwork":"hoodi","api":"https://api.stage.ops.ssvlabsinternal.com/api","explorerUrl":"https://hoodi.explorer.ssv.network","insufficientBalanceUrl":"https://faucet.ssv.network","googleTagSecret":"GTM-K3GR7M5","tokenAddress":"0x9F5d4Ec84fC4785788aB44F9de973cF34F7A038e","setterContractAddress":"0x58410Bef803ECd7E63B23664C586A6DB72DAf59c","getterContractAddress":"0x5AdDb3f1529C5ec70D77400499eE4bbF328368fe"}]'
SITE_URL='http://localhost:3000'
7 changes: 7 additions & 0 deletions .env.production
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
REACT_APP_DEBUG=
REACT_APP_API_BASE_URL=$API_BASE_URL
REACT_APP_LINK_SSV_WEBAPP=$LINK_SSV_WEBAPP
REACT_APP_GOOGLE_TAG_SECRET=$GOOGLE_TAG_SECRET
REACT_APP_GOOGLE_TAG_URL=https://www.googletagmanager.com/gtm.js?id=
REACT_APP_ANNOUNCEMENT=$ANNOUNCEMENT
REACT_APP_MIXPANEL_TOKEN=$MIXPANEL_TOKEN
137 changes: 0 additions & 137 deletions .github/workflows/build_deploy.yml

This file was deleted.

100 changes: 100 additions & 0 deletions .github/workflows/lint_build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
name: Build & deploy

on:
push:
branches:
- "**"
pull_request:
branches:
- "**"

workflow_dispatch:

jobs:
lint-and-build:
runs-on: ubuntu-latest

env:
STAGE_SSV_NETWORKS: >
[
{
"networkId": 560048,
"apiVersion": "v4",
"apiNetwork": "hoodi",
"api": "https://api.stage.ops.ssvlabsinternal.com/api",
"explorerUrl": "https://hoodi-explorer.stage.ssv.network",
"insufficientBalanceUrl": "https://faucet.stage.ssv.network",
"googleTagSecret": "87987987987",
"tokenAddress": "0x746c33ccc28b1363c35c09badaf41b2ffa7e6d56",
"bAppContractAddress": "0x40d959B95e7c56962D6d388d87921c03734b9C2C",
"setterContractAddress": "0x746c33ccc28b1363c35c09badaf41b2ffa7e6d56",
"getterContractAddress": "0x746c33ccc28b1363c35c09badaf41b2ffa7e6d56"
}
]

steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0

- uses: actions/setup-node@v3
with:
node-version: 20.12.2

- uses: pnpm/action-setup@v2
with:
version: 9.0.6

- uses: actions/cache@v3
with:
path: ~/.pnpm-store
key: ${{ runner.os }}-pnpm-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-

- name: Install dependencies
run: pnpm install --frozen-lockfile

- name: Run lint
run: pnpm lint
env:
SKIP_ENV_VALIDATION: true

# <explorer.stage.ssv.network>
- name: Run stage build
if: github.ref == 'refs/heads/stage'
env:
SSV_NETWORKS: "${{ env.STAGE_SSV_NETWORKS }}"
NEXT_PUBLIC_SSV_NETWORKS: "${{ env.STAGE_SSV_NETWORKS }}"
SITE_URL: "https://explorer.stage.ssv.network"

run: pnpm build
# </explorer.stage.ssv.network>

# <explorer.ssv.network>
- name: Run prod build
if: github.ref == 'refs/heads/main'
env:
NODE_OPTIONS: "--openssl-legacy-provider"
API_BASE_URL: ${{ secrets.PROD_API_BASE_URL_V4 }}
ANNOUNCEMENT: ${{ secrets.PROD_ANNOUNCEMENT_V4 }}
LINK_SSV_WEBAPP: ${{ secrets.PROD_LINK_SSV_WEBAPP_V4 }}
GOOGLE_TAG_SECRET: ${{ secrets.PROD_GOOGLE_TAG_SECRET_V4 }}
MIXPANEL_TOKEN: ${{ secrets.MIXPANEL_TOKEN_PROD }}
SITE_URL: "https://explorer.ssv.network"
run: pnpm build

- name: Deploy prod
if: github.ref == 'refs/heads/main'
uses: jakejarvis/s3-sync-action@v0.5.0
with:
args: --acl public-read --follow-symlinks --delete
env:
NODE_OPTIONS: "--openssl-legacy-provider"
AWS_S3_BUCKET: ${{ secrets.PROD_AWS_S3_BUCKET_V4 }}
ANNOUNCEMENT: ${{ secrets.PROD_ANNOUNCEMENT_V4 }}
AWS_ACCESS_KEY_ID: ${{ secrets.PROD_AWS_SECRET_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.PROD_AWS_SECRET_ACCESS_KEY }}
AWS_REGION: "us-west-2"
SOURCE_DIR: "build/"
# </explorer.ssv.network>
9 changes: 5 additions & 4 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,9 @@
/.pnp
.pnp.js

# yml
.github/workflows/test.yml

# testing
/coverage

Expand All @@ -15,7 +18,6 @@
# next.js
/.next/
/out/
next-env.d.ts

# production
/build
Expand All @@ -25,9 +27,6 @@ next-env.d.ts
*.pem

# debug
npm-debug.log*
yarn-debug.log*
yarn-error.log*
.pnpm-debug.log*

# local env files
Expand All @@ -40,3 +39,5 @@ yarn-error.log*

# typescript
*.tsbuildinfo
/.vscode/
/.idea/
28 changes: 0 additions & 28 deletions .vscode/settings.json

This file was deleted.

28 changes: 28 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# Use an official Node.js runtime as a base image
FROM node:20.10-alpine

# Set working directory
WORKDIR /usr/app

# Install PM2 globally
RUN npm install -g pnpm

# Copy package files for dependency installation
# Utilise Docker cache to save re-installing dependencies if unchanged
COPY ./package*.json ./pnpm-lock.yaml ./

# Install dependencies
RUN pnpm install

# Copy all files
COPY ./ ./
COPY .env.example .env

# Build app
RUN pnpm docker-build

# Expose the listening port
EXPOSE 3000

# Launch app with PM2
CMD [ "pnpm", "start" ]
2 changes: 0 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@

# SSV Web

# Development
Expand Down Expand Up @@ -98,4 +97,3 @@ On every push attempt tests are running to check that changes are not break anyt
The ssv-api is licensed under the
[GNU General Public License v3.0](https://www.gnu.org/licenses/gpl-3.0.en.html),
also included in our repository in the `LICENSE` file.

5 changes: 5 additions & 0 deletions next-env.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
/// <reference types="next" />
/// <reference types="next/image-types/global" />

// NOTE: This file should not be edited
// see https://nextjs.org/docs/app/api-reference/config/typescript for more information.
Loading