Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
57 commits
Select commit Hold shift + click to select a range
9a3ff32
new Dashboard tab
mateumiralles Oct 14, 2025
d776c90
WIP system health
mateumiralles Oct 15, 2025
dc5d056
system health
mateumiralles Oct 16, 2025
1b75b03
uptime relocated (#2295)
mateumiralles Oct 17, 2025
61f4c00
[WIP] Chain stats
mateumiralles Oct 22, 2025
5f424e3
Node status card skeleton
mateumiralles Oct 22, 2025
9f6cdb5
harcoded hook data and types
mateumiralles Oct 23, 2025
b643468
Validators card skeleton
mateumiralles Oct 23, 2025
4c367d4
subtitles styles
mateumiralles Oct 23, 2025
4c63436
styles and responsive
mateumiralles Oct 23, 2025
75361de
nodeStatus call && hook
mateumiralles Oct 25, 2025
b099304
Loading component small variant
mateumiralles Oct 25, 2025
57fa35a
relocate NetworkCards
mateumiralles Oct 25, 2025
48b32c1
ec syncBar fix
mateumiralles Oct 25, 2025
425dc42
node status adjustments
mateumiralles Jan 19, 2026
386f22c
WIP system health
mateumiralles Oct 15, 2025
2afc347
system health
mateumiralles Oct 16, 2025
fb120b0
uptime relocated (#2295)
mateumiralles Oct 17, 2025
76a0520
update staking dashboard types (#2345)
mateumiralles Jan 20, 2026
b5cf1a8
Dashboard network logos (#2346)
mateumiralles Jan 20, 2026
a3914a5
card's width strech fix
mateumiralles Jan 20, 2026
66ebbd2
dark mode fixes
mateumiralles Jan 21, 2026
5834226
replace eth svg
mateumiralles Jan 21, 2026
cb33545
Query validators data using local beacon (#2347)
mateumiralles Jan 21, 2026
20f8bdb
no nodes card
mateumiralles Jan 21, 2026
14bd44d
no nodes card fix
mateumiralles Jan 21, 2026
bfe762d
Signer status check (#2350)
mateumiralles Jan 23, 2026
ada65e2
Store beaconcha consent (#2351)
mateumiralles Jan 26, 2026
9619b8c
Dashbaord pkgs links (#2352)
mateumiralles Jan 27, 2026
8bb781d
gwei to GNO fix
mateumiralles Jan 29, 2026
3a7386e
Avoid execution synced false positive (#2362)
mateumiralles Feb 9, 2026
a2720b6
revert beaconchaConsent
mateumiralles Feb 10, 2026
09bd49b
Remove rewards Data (#2370)
mateumiralles Feb 10, 2026
f144248
validators status badges (#2371)
mateumiralles Feb 11, 2026
e4a372c
dynamic beacocnha dashboard url
mateumiralles Feb 11, 2026
c7fbf69
Merge branch 'develop' into mateu/staking-dashboard
mateumiralles Feb 11, 2026
4fe3616
rm log
mateumiralles Feb 11, 2026
6f5298b
status badge fix
mateumiralles Feb 11, 2026
5213251
hide rewards card if no validators
mateumiralles Feb 11, 2026
b38f5a5
rm duplicated hook
mateumiralles Feb 11, 2026
e1525b6
return units for memoryUsed & diskUsed
mateumiralles Feb 11, 2026
d0aab9b
rm logging leftovers
mateumiralles Feb 11, 2026
6d1ef37
replace Network typing
mateumiralles Feb 11, 2026
3e6bf58
use dappmanager's logger
mateumiralles Feb 11, 2026
c84f275
use ethers gwei conversion
mateumiralles Feb 16, 2026
574401f
filter active & installed networks
mateumiralles Feb 16, 2026
43e27fb
return clients errors
mateumiralles Feb 17, 2026
3233ee3
fetch val only for networks with clients
mateumiralles Feb 17, 2026
4939948
fix val attesting false positive
mateumiralles Feb 17, 2026
7eaeee5
ec progress sanity check
mateumiralles Feb 23, 2026
6e2c4be
fix installed client filtering
mateumiralles Feb 23, 2026
920b748
re-write client-row component
mateumiralles Feb 23, 2026
23dd825
improve cc progress
mateumiralles Feb 23, 2026
27fbe71
fix loading bug
mateumiralles Feb 23, 2026
1530361
combine validatorsData calls
mateumiralles Feb 23, 2026
6edccf8
Initial plan
Copilot Feb 24, 2026
ded4864
fix: add polling interval for data refresh, fix variable shadowing, c…
Copilot Feb 24, 2026
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
3 changes: 2 additions & 1 deletion packages/admin-ui/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,8 @@
"@types/react-dom": "^18.3.0",
"nodemon": "^3.1.4",
"prettier": "^1.16.4",
"ts-node": "^10.9.2"
"ts-node": "^10.9.2",
"vite-plugin-svgr": "^4.5.0"
},
"optionalDependencies": {
"@rollup/rollup-linux-x64-gnu": "4.18.0"
Expand Down
81 changes: 81 additions & 0 deletions packages/admin-ui/src/__mock-backend__/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,44 @@ export const otherCalls: Omit<Routes, keyof typeof namedSpacedCalls> = {
progress: 0.83027522935
}
],
nodeStatusGetByNetwork: async () => ({
mainnet: {
ec: {
name: "Nethermind",
dnp: "nethermind.dnp.dappnode.eth",
isSynced: true,
currentBlock: 23648945,
progress: 100,
peers: 50
},
cc: {
name: "Nimbus",
dnp: "nimbus.dnp.dappnode.eth",
isSynced: true,
currentBlock: 12875373,
progress: 100,
peers: 40
}
},
hoodi: {
ec: {
name: "besu",
dnp: "besu-hoodi.dnp.dappnode.eth",
isSynced: true,
currentBlock: 1480848,
progress: 100,
peers: 30
},
cc: {
name: "Prysm",
dnp: "prysm-hoodi.dnp.dappnode.eth",
isSynced: false,
currentBlock: 1592925,
progress: 100,
peers: 20
}
}
}),
changeIpfsTimeout: async () => {},
cleanCache: async () => {},
cleanDb: async () => {},
Expand Down Expand Up @@ -411,6 +449,12 @@ export const otherCalls: Omit<Routes, keyof typeof namedSpacedCalls> = {
gnosis: "prysm-gnosis.dnp.dappnode.eth"
};
},
executionClientsGetByNetworks: async () => {
return {
mainnet: "geth.dnp.dappnode.eth",
gnosis: "nethermind-xdai.dnp.dappnode.eth"
};
},
premiumBeaconBackupActivate: async () => {},
premiumBeaconBackupDeactivate: async () => {},
premiumBeaconBackupStatus: async (): Promise<Record<string, BeaconBackupNetworkStatus>> => {
Expand All @@ -433,6 +477,43 @@ export const otherCalls: Omit<Routes, keyof typeof namedSpacedCalls> = {
mainnet: { validators: ["0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef"] },
hoodi: { validators: [] },
gnosis: null
}),

validatorsDataByNetwork: async () => ({
mainnet: {
active: { validators: ["0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef"] },
attesting: { validators: ["0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef"] },
balances: {
balances: {
"0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef": "32000000000"
}
}
},
hoodi: {
active: { validators: [] },
attesting: { validators: [] },
balances: { balances: {} }
},
gnosis: {
active: null,
attesting: null,
balances: null
}
}),

signerByNetworkGet: async () => ({
mainnet: {
isInstalled: true,
brainRunning: true
},
hoodi: {
isInstalled: true,
brainRunning: false
},
gnosis: {
isInstalled: false,
brainRunning: false
}
})
};

Expand Down
6 changes: 3 additions & 3 deletions packages/admin-ui/src/components/Loading.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,17 @@ import React, { useState, useEffect } from "react";
import logoAnimated from "img/dappNodeAnimation.gif";
import "./loading.scss";

export default function Loading({ steps }: { steps: string[] }) {
export default function Loading({ steps, small }: { steps?: string[]; small?: boolean }) {
const [index, setIndex] = useState(0);
useEffect(() => {
const interval = setInterval(() => setIndex((i) => i + 1), 3000);
return () => clearInterval(interval);
}, []);

return (
<div className="loading-view">
<div className={`loading-view ${small && "small"}`}>
<img src={logoAnimated} alt="Loading icon" />
<p className="steps">{steps[index] || steps[steps.length - 1]}...</p>
{steps && <p className="steps">{steps[index] || steps[steps.length - 1]}...</p>}
</div>
);
}
9 changes: 9 additions & 0 deletions packages/admin-ui/src/components/loading.scss
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,13 @@
p {
opacity: 0.6;
}

&.small {
margin: 1rem 0px;
img {
width: 50px;
height: 50px;
margin: 0px;
}
}
}
7 changes: 7 additions & 0 deletions packages/admin-ui/src/components/sidebar/navbarItems.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ import { FaRegBell } from "react-icons/fa";
import { SiEthereum } from "react-icons/si";
// URLs
import { relativePath as dashboardRelativePath } from "pages/dashboard";
import { relativePath as dashboardv2RelativePath } from "pages/dashboard_v2";
import { relativePath as devicesRelativePath } from "pages/vpn";
import { relativePath as installerRelativePath } from "pages/installer";
import { relativePath as packagesRelativePath } from "pages/packages";
Expand Down Expand Up @@ -70,6 +71,12 @@ export const sidenavItems: {
icon: MdDashboard,
show: true
},
{
name: "DASHBOARD v2",
href: dashboardv2RelativePath,
icon: MdDashboard,
show: true
},
{
name: "WI-FI",
href: wifiRelativePath,
Expand Down
Loading