├── .babelrc ├── .dockerignore ├── .github └── workflows │ └── docker-image.yml ├── .gitignore ├── .prettierrc.json ├── CHANGELOG.md ├── Dockerfile ├── LICENSE ├── README.md ├── bun.lockb ├── docker-compose.yml ├── index.html ├── package.json ├── postcss.config.js ├── public ├── CNAME ├── dojonodelogo-dark-square.png ├── dojonodelogo-dark.png ├── dojonodelogo-light.png └── splashscreens │ ├── ipad_splash.png │ ├── ipadpro1_splash.png │ ├── ipadpro2_splash.png │ ├── ipadpro3_splash.png │ ├── iphone5_splash.png │ ├── iphone6_splash.png │ ├── iphoneplus_splash.png │ ├── iphonex_splash.png │ ├── iphonexr_splash.png │ └── iphonexsmax_splash.png ├── src ├── App.svelte ├── app.css ├── assets │ ├── Header.avif │ ├── TaikoHeart.avif │ ├── icons │ │ ├── Abacus.avif │ │ ├── Antenna.avif │ │ ├── Brain.avif │ │ ├── Chain.avif │ │ ├── Chain.png │ │ ├── CheckMark.avif │ │ ├── CremeMode.avif │ │ ├── Cross.avif │ │ ├── DarkMode.avif │ │ ├── Discord.avif │ │ ├── DojoScroll.svg │ │ ├── Dolls.avif │ │ ├── Error.avif │ │ ├── Ethereum.avif │ │ ├── FileBox.avif │ │ ├── Gas.avif │ │ ├── Github.avif │ │ ├── Heart.avif │ │ ├── NodeTaiko.avif │ │ ├── Package.avif │ │ ├── Purse.avif │ │ ├── Timer_Clock.avif │ │ ├── Twitter.avif │ │ └── Warning.avif │ ├── taiko-banner.svg │ └── taikoLogoIcon.png ├── components │ ├── Card.svelte │ ├── ChainCard.svelte │ ├── DetailsModal.svelte │ ├── Footer.svelte │ ├── Modal.svelte │ ├── Progressbar.svelte │ └── ThemeSwitcher.svelte ├── domain │ ├── constants.ts │ ├── enums.ts │ └── types.ts ├── main.ts ├── routes │ └── Dashboard.svelte ├── utils │ ├── connection.ts │ ├── localstorage.ts │ └── prometheus.ts └── vite-env.d.ts ├── svelte.config.js ├── tailwind.config.cjs ├── tsconfig.json ├── tsconfig.node.json └── vite.config.ts /.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": [["@babel/preset-env", { "targets": { "node": "current" } }]], 3 | "env": { 4 | "test": { 5 | "plugins": ["transform-es2015-modules-commonjs"] 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /.dockerignore: -------------------------------------------------------------------------------- 1 | /systeminformation 2 | /node_modules -------------------------------------------------------------------------------- /.github/workflows/docker-image.yml: -------------------------------------------------------------------------------- 1 | name: Docker Image CI 2 | 3 | on: 4 | push: 5 | tags: 6 | - '*' 7 | 8 | jobs: 9 | buildx: 10 | runs-on: ubuntu-latest 11 | steps: 12 | - name: Checkout 13 | uses: actions/checkout@v3 14 | 15 | - name: Docker Login 16 | uses: docker/login-action@v2.2.0 17 | with: 18 | username: wolfderechter 19 | password: ${{ secrets.DOCKERHUB_TOKEN }} 20 | 21 | - name: Set up QEMU 22 | uses: docker/setup-qemu-action@v2 23 | 24 | - name: Set up Docker Buildx 25 | id: buildx 26 | uses: docker/setup-buildx-action@v2 27 | 28 | - name: Build and push latest 29 | uses: docker/build-push-action@v4 30 | with: 31 | context: . 32 | file: ./Dockerfile 33 | platforms: linux/amd64,linux/arm64 34 | push: true 35 | tags: | 36 | wolfderechter/taiko-node-dashboard:latest 37 | wolfderechter/taiko-node-dashboard:${{ github.ref_name }} 38 | 39 | - name: Create github release 40 | uses: ncipollo/release-action@v1 41 | with: 42 | makeLatest: true 43 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | pnpm-debug.log* 8 | lerna-debug.log* 9 | 10 | node_modules 11 | dist 12 | dist-ssr 13 | *.local 14 | 15 | # Editor directories and files 16 | .vscode/* 17 | !.vscode/extensions.json 18 | .idea 19 | .DS_Store 20 | *.suo 21 | *.ntvs* 22 | *.njsproj 23 | *.sln 24 | *.sw? 25 | .env 26 | .a1.env 27 | .s.env 28 | 29 | # vite 30 | vite.config.ts.timestamp-*.mjs -------------------------------------------------------------------------------- /.prettierrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "doubleQuote": true, 3 | "trailingComma": "all", 4 | "tabWidth": 2, 5 | "semi": true, 6 | "arrowParens": "always" 7 | } 8 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | All notable changes to this project will be documented in this file. 4 | 5 | The format is based on [Keep a Changelog], 6 | and this project adheres to [Semantic Versioning]. 7 | 8 | ## [Unreleased] 9 | 10 | ## [1.4.2] - 2024-06-19 11 | 12 | ### Fixed 13 | 14 | - use mainnet etherscan 15 | - show 4 fixed digits for eth balances 16 | 17 | ## [1.4.1] - 2024-06-06 18 | 19 | ### Fixed 20 | 21 | - darkmode network dropdown issue 22 | 23 | ## [1.4.0] - 2024-05-27 24 | 25 | ### Added 26 | 27 | - Upgraded to support mainnet 28 | 29 | ## [1.3.3] - 2024-05-22 30 | 31 | ### Added 32 | 33 | - Check for `https://dashboard.dojonode.xyz` and add warning to use http or selfhost to fix common issue 34 | 35 | ### Changed 36 | 37 | - remove cursor pointer on cards 38 | 39 | ## [1.3.2] - 2024-05-06 40 | 41 | ### Fixed 42 | 43 | - fix broken startNodeHeight which broke the ETA timer 44 | 45 | ## [1.3.1] - 2024-05-02 46 | 47 | ### Changed 48 | 49 | - include arm in docker build 50 | 51 | ## [1.3.0] - 2024-04-25 52 | 53 | ### Changed 54 | 55 | - upgrade to alpha7 hekla testnet 56 | 57 | ## [1.2.2] - 2024-01-23 58 | 59 | ### Fixed 60 | 61 | - fix dojo flag title 62 | - update headerimage href url 63 | 64 | ## [1.2.1] - 2024-01-16 65 | 66 | ### Fixed 67 | 68 | - issue with animateConnections on error 69 | 70 | ## [1.2.0] - 2024-01-16 71 | 72 | ### Added 73 | 74 | - add changelog 75 | 76 | ### Changed 77 | 78 | - upgrade postcss to es6 79 | - update dependencies: vite v5 80 | - update footer 81 | - upgrade to alpha6 katla testnet 82 | - optimize images 83 | - combine connections and settings into connections popup 84 | - refactored the themeswitcher 85 | - updated theme colors 86 | 87 | ## [1.1.5] - 2023-11-12 88 | 89 | ### Added 90 | 91 | - add RPC checks before fetching 92 | 93 | ### Changed 94 | 95 | - refactored initializeRPCConnection with max time so users sees quicker connection feedback 96 | 97 | ## [1.1.4] - 2023-11-05 98 | 99 | ### Added 100 | 101 | - add PWA splashscreen 102 | - add node check before fetching data 103 | 104 | ### Changed 105 | 106 | - update Docker base images 107 | - update npm dependencies 108 | 109 | ### Removed 110 | 111 | - remove L2 address input 112 | 113 | ## [1.1.3] - 2023-10-28 114 | 115 | ## Added 116 | 117 | - add URL params support 118 | - add Footer 119 | - add 'expert mode' 120 | 121 | ### Changed 122 | 123 | - cleanup systeminfo 124 | - abstract away RPC inits 125 | - refactor Prometheus calls 126 | - linting + cleanup project 127 | 128 | ## [1.1.2] - 2023-10-22 129 | 130 | ### Added 131 | 132 | - add PWA support 133 | - add deployment scripts 134 | - add umami website analytics 135 | 136 | ### Changed 137 | 138 | - refactored project 139 | 140 | ### Fixed 141 | 142 | - fixed accessibility issue of input fields 143 | 144 | ## [1.1.1] - 2023-09-22 145 | 146 | ### Fixed 147 | 148 | - update blockexplorer url to jolnir 149 | 150 | ## [1.1.0] - 2023-09-22 151 | 152 | ### Added 153 | 154 | - support custom event indexer API in connections 155 | 156 | ### Changed 157 | 158 | - support a5 testnet (jolnir) 159 | - update default ports to a5 ports 160 | - hide ETA time when (almost) synced 161 | - update npm dependencies 162 | 163 | ## [1.0.3] - 2023-07-17 164 | 165 | - initial release 166 | 167 | 168 | [keep a changelog]: https://keepachangelog.com/en/1.0.0/ 169 | [semantic versioning]: https://semver.org/spec/v2.0.0.html 170 | 171 | 172 | [unreleased]: https://github.com/dojonode/taiko-node-dashboard/compare/1.1.5...HEAD 173 | [1.1.5]: https://github.com/dojonode/taiko-node-dashboard/compare/1.1.4...1.1.5 174 | [1.1.4]: https://github.com/dojonode/taiko-node-dashboard/compare/1.1.3...1.1.4 175 | [1.1.3]: https://github.com/dojonode/taiko-node-dashboard/compare/1.1.2...1.1.3 176 | [1.1.2]: https://github.com/dojonode/taiko-node-dashboard/compare/1.1.1...1.1.2 177 | [1.1.1]: https://github.com/dojonode/taiko-node-dashboard/compare/1.1.0...1.1.1 178 | [1.1.0]: https://github.com/dojonode/taiko-node-dashboard/compare/1.0.3...1.1.0 179 | [1.0.3]: https://github.com/dojonode/taiko-node-dashboard/releases/tag/0.0.1 180 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM oven/bun AS build 2 | 3 | # Set the working directory 4 | WORKDIR /app 5 | 6 | # Copy the package.json into the container 7 | COPY package.json package.json 8 | 9 | # Install dependencies using bun 10 | RUN bun install 11 | 12 | # Copy the rest of the Svelte app into the container 13 | COPY . . 14 | 15 | # Build the Svelte app 16 | RUN bun run build 17 | 18 | # Use a lightweight Nginx image as the base image for the final image 19 | FROM nginx:1.27.1 20 | # Copy the built app from the Build stage to the Nginx web server 21 | COPY --from=build /app/dist /usr/share/nginx/html 22 | 23 | # Expose port 80 so that the container can be accessed from the host 24 | EXPOSE 80 25 | 26 | # Start the Nginx web server 27 | CMD ["nginx", "-g", "daemon off;"] 28 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2023 dojonode 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Taiko Node Dashboard 2 | ![Docker Pulls](https://img.shields.io/docker/pulls/wolfderechter/taiko-node-dashboard) 3 | 4 | Taiko node dashboard is aimed to provide quick and digestible insights into your Taiko node. 5 | ![Cover_Image](https://github.com/dojonode/taiko-node-dashboard/assets/60930264/8a18073f-848c-421f-9e81-4aae5482737e) 6 | 7 | ## Usage 8 | 9 | To run the dashboard simply append the following two services to the `docker-compose.yml` of the taiko node. 10 | 11 | To configure the dashboard for the Hekla testnet, use the `hekla` image tag in `wolfderechter/taiko-node-dashboard:hekla`. 12 | 13 | ```docker-compose 14 | taiko-node-dashboard: 15 | image: wolfderechter/taiko-node-dashboard:latest 16 | ports: 17 | - "7744:80" 18 | dojonode-systeminformation: 19 | image: wolfderechter/dojonode-systeminformation:latest 20 | ports: 21 | - "3009:3009" 22 | ``` 23 | 24 | Or if you wish to run the dashboard standalone: 25 | 26 | 1. `git clone https://github.com/dojonode/taiko-node-dashboard-docker` 27 | 2. `cd taiko-node-dashboard-docker` 28 | 3. `docker compose up` 29 | 4. visit http://localhost:7744 to access the dashboard 30 | 5. Click on the 📡 button and change localhost to the IP address of the node's machine 31 | 32 | 33 | ## Development 34 | 35 |
36 | Development steps 37 | 38 | ### Pre-installation 39 | 40 | Make sure you have **node** and **bun** installed on your system. You can do it by: 41 | 42 | `brew install node` 43 | `curl -fsSL https://bun.sh/install | bash` 44 | 45 | ### Development Usage 46 | 47 | You can start the application with the following lines: 48 | 49 | `bun install` 50 | 51 | `bun start` 52 | 53 | You'll probably also want to start the [systeminformation](https://github.com/dojonode/dojonode-systeminformation) application with: 54 | 55 | `git clone https://github.com/dojonode/dojonode-systeminformation` 56 | 57 | `cd dojonode-systeminformation` 58 | 59 | `bun server.js` 60 | 61 | ### Deployment 62 | 63 | To deploy to the website run: `pnpm run predeploy` and `pnpm run deploy`. This will build the website and push to the `gh-pages` branch. 64 | 65 |
66 | -------------------------------------------------------------------------------- /bun.lockb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dojonode/taiko-node-dashboard/9928a5834d3c3bb09c68b6c7227f7fc128038d7d/bun.lockb -------------------------------------------------------------------------------- /docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: "3.9" 2 | 3 | services: 4 | taiko-node-dashboard: 5 | image: wolfderechter/taiko-node-dashboard:latest 6 | ports: 7 | - "7744:80" 8 | dojonode-systeminformation: 9 | image: wolfderechter/dojonode-systeminformation:latest 10 | ports: 11 | - "3009:3009" 12 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | dojo node 33 | 34 | 35 | 36 |
37 | 38 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@wolfderechter/taiko-node-dashboard", 3 | "version": "1.4.8", 4 | "type": "module", 5 | "homepage": "https://dojonode.xyz", 6 | "scripts": { 7 | "start": "bun run dev", 8 | "dev": "vite", 9 | "build": "vite build", 10 | "preview": "vite preview", 11 | "check": "svelte-check --tsconfig ./tsconfig.json", 12 | "prettier": "bunx prettier '**/*.{ts,svelte}'", 13 | "prettier:write": "bunx run prettier -- --write", 14 | "prettier:check": "run prettier -- --check", 15 | "svelte:check": "bunx svelte-check", 16 | "lint": "bunx eslint './**/*.{ts,svelte}'", 17 | "lint:fix": "bunx eslint --fix './**/*.{ts,svelte}'", 18 | "predeploy": "bun run build", 19 | "deploy": "gh-pages -d dist", 20 | "knip": "knip" 21 | }, 22 | "devDependencies": { 23 | "@sveltejs/vite-plugin-svelte": "^3.1.2", 24 | "@tsconfig/svelte": "^5.0.4", 25 | "@types/node": "^22.10.2", 26 | "autoprefixer": "^10.4.20", 27 | "babel-plugin-transform-es2015-modules-commonjs": "^6.26.2", 28 | "gh-pages": "^6.2.0", 29 | "knip": "^5.40.0", 30 | "postcss": "^8.4.49", 31 | "postcss-cli": "^11.0.0", 32 | "postcss-loader": "^8.1.1", 33 | "prettier": "3.4.2", 34 | "rollup-plugin-polyfill-node": "^0.13.0", 35 | "svelte": "^4.2.19", 36 | "svelte-check": "^4.1.1", 37 | "svelte-loader": "^3.2.4", 38 | "svelte-preprocess": "^6.0.3", 39 | "tailwindcss": "^3.4.16", 40 | "ts-loader": "^9.5.1", 41 | "tslib": "^2.8.0", 42 | "typescript": "^5.6.3", 43 | "vite": "^5.4.11" 44 | }, 45 | "dependencies": { 46 | "buffer": "^6.0.3", 47 | "canvas-confetti": "^1.9.3", 48 | "simple-duration": "^1.1.1", 49 | "svelte-spa-router": "^4.0.1", 50 | "tw-colors": "^3.3.2", 51 | "vite-plugin-pwa": "^0.21.1", 52 | "web3": "^4.16.0" 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /postcss.config.js: -------------------------------------------------------------------------------- 1 | export default { 2 | plugins: { 3 | tailwindcss: {}, 4 | autoprefixer: {}, 5 | } 6 | }; 7 | -------------------------------------------------------------------------------- /public/CNAME: -------------------------------------------------------------------------------- 1 | dashboard.dojonode.xyz 2 | -------------------------------------------------------------------------------- /public/dojonodelogo-dark-square.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dojonode/taiko-node-dashboard/9928a5834d3c3bb09c68b6c7227f7fc128038d7d/public/dojonodelogo-dark-square.png -------------------------------------------------------------------------------- /public/dojonodelogo-dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dojonode/taiko-node-dashboard/9928a5834d3c3bb09c68b6c7227f7fc128038d7d/public/dojonodelogo-dark.png -------------------------------------------------------------------------------- /public/dojonodelogo-light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dojonode/taiko-node-dashboard/9928a5834d3c3bb09c68b6c7227f7fc128038d7d/public/dojonodelogo-light.png -------------------------------------------------------------------------------- /public/splashscreens/ipad_splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dojonode/taiko-node-dashboard/9928a5834d3c3bb09c68b6c7227f7fc128038d7d/public/splashscreens/ipad_splash.png -------------------------------------------------------------------------------- /public/splashscreens/ipadpro1_splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dojonode/taiko-node-dashboard/9928a5834d3c3bb09c68b6c7227f7fc128038d7d/public/splashscreens/ipadpro1_splash.png -------------------------------------------------------------------------------- /public/splashscreens/ipadpro2_splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dojonode/taiko-node-dashboard/9928a5834d3c3bb09c68b6c7227f7fc128038d7d/public/splashscreens/ipadpro2_splash.png -------------------------------------------------------------------------------- /public/splashscreens/ipadpro3_splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dojonode/taiko-node-dashboard/9928a5834d3c3bb09c68b6c7227f7fc128038d7d/public/splashscreens/ipadpro3_splash.png -------------------------------------------------------------------------------- /public/splashscreens/iphone5_splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dojonode/taiko-node-dashboard/9928a5834d3c3bb09c68b6c7227f7fc128038d7d/public/splashscreens/iphone5_splash.png -------------------------------------------------------------------------------- /public/splashscreens/iphone6_splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dojonode/taiko-node-dashboard/9928a5834d3c3bb09c68b6c7227f7fc128038d7d/public/splashscreens/iphone6_splash.png -------------------------------------------------------------------------------- /public/splashscreens/iphoneplus_splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dojonode/taiko-node-dashboard/9928a5834d3c3bb09c68b6c7227f7fc128038d7d/public/splashscreens/iphoneplus_splash.png -------------------------------------------------------------------------------- /public/splashscreens/iphonex_splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dojonode/taiko-node-dashboard/9928a5834d3c3bb09c68b6c7227f7fc128038d7d/public/splashscreens/iphonex_splash.png -------------------------------------------------------------------------------- /public/splashscreens/iphonexr_splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dojonode/taiko-node-dashboard/9928a5834d3c3bb09c68b6c7227f7fc128038d7d/public/splashscreens/iphonexr_splash.png -------------------------------------------------------------------------------- /public/splashscreens/iphonexsmax_splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dojonode/taiko-node-dashboard/9928a5834d3c3bb09c68b6c7227f7fc128038d7d/public/splashscreens/iphonexsmax_splash.png -------------------------------------------------------------------------------- /src/App.svelte: -------------------------------------------------------------------------------- 1 | 16 | 17 |
18 | 19 |
20 | 21 | 31 | -------------------------------------------------------------------------------- /src/app.css: -------------------------------------------------------------------------------- 1 | /* Responsiveness */ 2 | .nodeTypes button.active { 3 | transition: 0.4s; 4 | -webkit-transform: scale(1.02); 5 | -moz-transform: scale(1.02); 6 | -ms-transform: scale(1.02); 7 | -o-transform: scale(1.02); 8 | transform: scale(1.02); 9 | } 10 | 11 | button.active { 12 | transition: 0.4s; 13 | -webkit-transform: scale(0.98); 14 | -moz-transform: scale(0.98); 15 | -ms-transform: scale(0.98); 16 | -o-transform: scale(0.98); 17 | transform: scale(0.98); 18 | } 19 | 20 | input:focus { 21 | transition: 0.4s; 22 | -webkit-transform: scale(0.98); 23 | -moz-transform: scale(0.98); 24 | -ms-transform: scale(0.98); 25 | -o-transform: scale(0.98); 26 | transform: scale(0.98); 27 | } -------------------------------------------------------------------------------- /src/assets/Header.avif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dojonode/taiko-node-dashboard/9928a5834d3c3bb09c68b6c7227f7fc128038d7d/src/assets/Header.avif -------------------------------------------------------------------------------- /src/assets/TaikoHeart.avif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dojonode/taiko-node-dashboard/9928a5834d3c3bb09c68b6c7227f7fc128038d7d/src/assets/TaikoHeart.avif -------------------------------------------------------------------------------- /src/assets/icons/Abacus.avif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dojonode/taiko-node-dashboard/9928a5834d3c3bb09c68b6c7227f7fc128038d7d/src/assets/icons/Abacus.avif -------------------------------------------------------------------------------- /src/assets/icons/Antenna.avif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dojonode/taiko-node-dashboard/9928a5834d3c3bb09c68b6c7227f7fc128038d7d/src/assets/icons/Antenna.avif -------------------------------------------------------------------------------- /src/assets/icons/Brain.avif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dojonode/taiko-node-dashboard/9928a5834d3c3bb09c68b6c7227f7fc128038d7d/src/assets/icons/Brain.avif -------------------------------------------------------------------------------- /src/assets/icons/Chain.avif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dojonode/taiko-node-dashboard/9928a5834d3c3bb09c68b6c7227f7fc128038d7d/src/assets/icons/Chain.avif -------------------------------------------------------------------------------- /src/assets/icons/Chain.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dojonode/taiko-node-dashboard/9928a5834d3c3bb09c68b6c7227f7fc128038d7d/src/assets/icons/Chain.png -------------------------------------------------------------------------------- /src/assets/icons/CheckMark.avif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dojonode/taiko-node-dashboard/9928a5834d3c3bb09c68b6c7227f7fc128038d7d/src/assets/icons/CheckMark.avif -------------------------------------------------------------------------------- /src/assets/icons/CremeMode.avif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dojonode/taiko-node-dashboard/9928a5834d3c3bb09c68b6c7227f7fc128038d7d/src/assets/icons/CremeMode.avif -------------------------------------------------------------------------------- /src/assets/icons/Cross.avif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dojonode/taiko-node-dashboard/9928a5834d3c3bb09c68b6c7227f7fc128038d7d/src/assets/icons/Cross.avif -------------------------------------------------------------------------------- /src/assets/icons/DarkMode.avif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dojonode/taiko-node-dashboard/9928a5834d3c3bb09c68b6c7227f7fc128038d7d/src/assets/icons/DarkMode.avif -------------------------------------------------------------------------------- /src/assets/icons/Discord.avif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dojonode/taiko-node-dashboard/9928a5834d3c3bb09c68b6c7227f7fc128038d7d/src/assets/icons/Discord.avif -------------------------------------------------------------------------------- /src/assets/icons/DojoScroll.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | -------------------------------------------------------------------------------- /src/assets/icons/Dolls.avif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dojonode/taiko-node-dashboard/9928a5834d3c3bb09c68b6c7227f7fc128038d7d/src/assets/icons/Dolls.avif -------------------------------------------------------------------------------- /src/assets/icons/Error.avif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dojonode/taiko-node-dashboard/9928a5834d3c3bb09c68b6c7227f7fc128038d7d/src/assets/icons/Error.avif -------------------------------------------------------------------------------- /src/assets/icons/Ethereum.avif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dojonode/taiko-node-dashboard/9928a5834d3c3bb09c68b6c7227f7fc128038d7d/src/assets/icons/Ethereum.avif -------------------------------------------------------------------------------- /src/assets/icons/FileBox.avif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dojonode/taiko-node-dashboard/9928a5834d3c3bb09c68b6c7227f7fc128038d7d/src/assets/icons/FileBox.avif -------------------------------------------------------------------------------- /src/assets/icons/Gas.avif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dojonode/taiko-node-dashboard/9928a5834d3c3bb09c68b6c7227f7fc128038d7d/src/assets/icons/Gas.avif -------------------------------------------------------------------------------- /src/assets/icons/Github.avif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dojonode/taiko-node-dashboard/9928a5834d3c3bb09c68b6c7227f7fc128038d7d/src/assets/icons/Github.avif -------------------------------------------------------------------------------- /src/assets/icons/Heart.avif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dojonode/taiko-node-dashboard/9928a5834d3c3bb09c68b6c7227f7fc128038d7d/src/assets/icons/Heart.avif -------------------------------------------------------------------------------- /src/assets/icons/NodeTaiko.avif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dojonode/taiko-node-dashboard/9928a5834d3c3bb09c68b6c7227f7fc128038d7d/src/assets/icons/NodeTaiko.avif -------------------------------------------------------------------------------- /src/assets/icons/Package.avif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dojonode/taiko-node-dashboard/9928a5834d3c3bb09c68b6c7227f7fc128038d7d/src/assets/icons/Package.avif -------------------------------------------------------------------------------- /src/assets/icons/Purse.avif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dojonode/taiko-node-dashboard/9928a5834d3c3bb09c68b6c7227f7fc128038d7d/src/assets/icons/Purse.avif -------------------------------------------------------------------------------- /src/assets/icons/Timer_Clock.avif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dojonode/taiko-node-dashboard/9928a5834d3c3bb09c68b6c7227f7fc128038d7d/src/assets/icons/Timer_Clock.avif -------------------------------------------------------------------------------- /src/assets/icons/Twitter.avif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dojonode/taiko-node-dashboard/9928a5834d3c3bb09c68b6c7227f7fc128038d7d/src/assets/icons/Twitter.avif -------------------------------------------------------------------------------- /src/assets/icons/Warning.avif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dojonode/taiko-node-dashboard/9928a5834d3c3bb09c68b6c7227f7fc128038d7d/src/assets/icons/Warning.avif -------------------------------------------------------------------------------- /src/assets/taikoLogoIcon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dojonode/taiko-node-dashboard/9928a5834d3c3bb09c68b6c7227f7fc128038d7d/src/assets/taikoLogoIcon.png -------------------------------------------------------------------------------- /src/components/Card.svelte: -------------------------------------------------------------------------------- 1 | 25 | 26 | 119 | 120 | 159 | -------------------------------------------------------------------------------- /src/components/ChainCard.svelte: -------------------------------------------------------------------------------- 1 | 7 | 8 | 23 | 24 | 64 | -------------------------------------------------------------------------------- /src/components/DetailsModal.svelte: -------------------------------------------------------------------------------- 1 | 7 | 8 | 9 |
10 |
11 | 12 |
13 | 16 |
17 |
18 | -------------------------------------------------------------------------------- /src/components/Footer.svelte: -------------------------------------------------------------------------------- 1 | 7 | 8 | 25 | 26 | 38 | -------------------------------------------------------------------------------- /src/components/Modal.svelte: -------------------------------------------------------------------------------- 1 | 14 | 15 | 22 | 48 |
49 | 50 | 64 | -------------------------------------------------------------------------------- /src/components/Progressbar.svelte: -------------------------------------------------------------------------------- 1 | 10 | 11 |
15 |
16 | {#if showPercentage} 17 |
18 | 19 | {#if finishedMessage} 20 | {progress < 100 && progress >= 0 21 | ? progress.toFixed(precision) + "%" 22 | : finishedMessage} 23 | {:else} 24 | 25 | {progress + "%"} 26 | {/if} 27 |
28 | {/if} 29 |
30 |
31 |
32 | 33 | 72 | -------------------------------------------------------------------------------- /src/components/ThemeSwitcher.svelte: -------------------------------------------------------------------------------- 1 | 33 | 34 |
35 |
36 | 43 | 50 |
51 | 52 | 58 |
59 | 60 | 85 | -------------------------------------------------------------------------------- /src/domain/constants.ts: -------------------------------------------------------------------------------- 1 | export const SYSTEMINFO_API_URL = "http://localhost:3009"; 2 | export const PROMETHEUS_API_URL = "http://localhost:9091"; 3 | export const MYNODE_API_URL = "ws://localhost:8548"; 4 | export const ETH_RPC_API_URL = "https://ethereum-rpc.publicnode.com"; 5 | export const L2_TAIKO_RPC_API_URL = "https://rpc.taiko.xyz"; 6 | export const EVENT_INDEXER_API_URL = "https://eventindexer.mainnet.taiko.xyz"; 7 | -------------------------------------------------------------------------------- /src/domain/enums.ts: -------------------------------------------------------------------------------- 1 | export const MetricTypes = { 2 | percentage: "%", 3 | gigabyte: "GB", 4 | megabyte: "MB", 5 | peers: "connected", 6 | ethereum: "ETH", 7 | taiko: "TKO", 8 | hours: "hours", 9 | minutes: "minutes", 10 | blockheight: "blocks", 11 | proposer: "blocks", 12 | prover: "blocks", 13 | total: "", 14 | gas: "gwei", 15 | }; 16 | 17 | export const NodeTypes = { 18 | Node: "node", 19 | Proposer: "proposer", 20 | Prover: "prover", 21 | }; 22 | 23 | export const Themes = { 24 | Dark: "dark", 25 | Paper: "paper", 26 | }; 27 | -------------------------------------------------------------------------------- /src/domain/types.ts: -------------------------------------------------------------------------------- 1 | export interface SysteminformationMetricsInterface { 2 | memUsedGB: number; 3 | memUsedPerc: number; 4 | cpuUsedPerc: number; 5 | filestorageFreeGB: number; 6 | filestorageUsedGB: number; 7 | filestorageUsedPerc: number; 8 | runtime: number; 9 | runtimeMetricType: any; 10 | } 11 | // TODO: strip this interface to the necesary items? 12 | export interface Systeminfo { 13 | mem: { 14 | total: number; 15 | free: number; 16 | used: number; 17 | active: number; 18 | available: number; 19 | buffers: number; 20 | cached: number; 21 | slab: number; 22 | buffcache: number; 23 | swaptotal: number; 24 | swapused: number; 25 | swapfree: number; 26 | }; 27 | cpu: { 28 | avgLoad: number; 29 | currentLoad: number; 30 | currentLoadUser: number; 31 | currentLoadSystem: number; 32 | currentLoadNice: number; 33 | currentLoadIdle: number; 34 | currentLoadIrq: number; 35 | rawCurrentLoad: number; 36 | rawCurrentLoadUser: number; 37 | rawCurrentLoadSystem: number; 38 | rawCurrentLoadNice: number; 39 | rawCurrentLoadIdle: number; 40 | rawCurrentLoadIrq: number; 41 | cpus: { 42 | load: number; 43 | loadUser: number; 44 | loadSystem: number; 45 | loadNice: number; 46 | loadIdle: number; 47 | loadIrq: number; 48 | rawLoad: number; 49 | rawLoadUser: number; 50 | rawLoadSystem: number; 51 | rawLoadNice: number; 52 | rawLoadIdle: number; 53 | rawLoadIrq: number; 54 | }[]; 55 | }; 56 | disk: { 57 | fs: string; 58 | type: string; 59 | size: number; 60 | used: number; 61 | available: number; 62 | use: number; 63 | mount: string; 64 | rw: boolean; 65 | }; 66 | startTime: number; 67 | } 68 | -------------------------------------------------------------------------------- /src/main.ts: -------------------------------------------------------------------------------- 1 | import "./app.css"; 2 | import App from "./App.svelte"; 3 | 4 | const app = new App({ 5 | target: document.getElementById("app"), 6 | }); 7 | 8 | export default app; 9 | -------------------------------------------------------------------------------- /src/routes/Dashboard.svelte: -------------------------------------------------------------------------------- 1 | 410 | 411 |
412 | 413 | 414 | dojo node header with trees and the logo 415 | 416 |
417 | 418 |
419 |
420 |
421 | 422 |
423 |
424 |
425 |
426 | 427 | dojo 428 | dojo flag 429 | {#if url?.startsWith('http://dashboard.dojonode.xyz') || url?.startsWith('http://hekla.dojonode.xyz') || url?.startsWith('https://dashboard.dojonode.xyz') || url?.startsWith('https://hekla.dojonode.xyz')} 430 |
431 | 435 |
436 | {/if} 437 |
438 | 439 |
440 |

node dashboard

441 |

the main training area

442 |
443 |
444 |
445 | 446 |
447 | 451 | | 452 | 456 | | 457 | 461 |
462 |
463 | 464 | 465 | 473 |
474 | 490 | {#if estimatedSyncingTime && syncingStatus} 491 | {estimatedSyncingTime} 494 | {/if} 495 |
496 | 497 |
500 | 513 | 514 |
518 | 524 | 534 | 542 | 552 | 561 | 568 | 575 | 576 | {#if nodeType === NodeTypes.Proposer || nodeType === NodeTypes.Prover} 577 | 588 | {/if} 589 | 590 | {#if nodeType === NodeTypes.Proposer} 591 | 598 | 599 | {:else if nodeType === NodeTypes.Prover} 600 | 607 | {/if} 608 | 615 | 616 | 619 | 622 | 625 |
626 |
627 |
628 |