Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
56 commits
Select commit Hold shift + click to select a range
5bbcd4c
Add average
Dec 30, 2025
0354c59
Add average
Dec 30, 2025
9e8a2e6
Review out of sync & low node alert + some tricks
Dec 31, 2025
8d171f4
Review out of sync & low node alert + some tricks
Dec 31, 2025
f57487e
Review out of sync & low node alert + some tricks
Dec 31, 2025
582983c
Review
Jan 5, 2026
f66c710
Review
Jan 5, 2026
238c9fa
Review
Jan 5, 2026
7025ed0
Review
Jan 5, 2026
3b6bbd8
Review
Jan 5, 2026
294c1a5
Fix documentation
Jan 5, 2026
74960f7
Fix documentation
Jan 5, 2026
05dc490
Fix documentation
Jan 5, 2026
cc82861
Fix documentation
Jan 5, 2026
b05dd34
Fix documentation
Jan 5, 2026
d5cfe4f
Fix icons
Jan 5, 2026
605b15f
Fix icons
Jan 5, 2026
b982bfe
Fix icons
Jan 5, 2026
fde7fe3
Fix icons
Jan 5, 2026
fefdc0b
Fix icons
Jan 5, 2026
471f336
Fix icons
Jan 5, 2026
5a406fa
Fix icons
Jan 5, 2026
a5121f6
Fix icons
Jan 5, 2026
150c085
Fix icons
Jan 5, 2026
614d32c
Fix icons
Jan 5, 2026
b8a9b87
Fix icons
Jan 5, 2026
12ee8ce
Fix icons
Jan 5, 2026
9725a91
Fix icons
Jan 5, 2026
da8a723
Fix icons
Jan 5, 2026
a39f70e
Fix icons
Jan 6, 2026
e84759d
Fix cache
Jan 6, 2026
4b7b42d
Fix cache
Jan 6, 2026
1dbe620
Fix cache
Jan 7, 2026
1dd4e72
Fix cache
Jan 7, 2026
2524b63
Fix cache
Jan 7, 2026
a3d7d83
Mobile menu
Jan 7, 2026
d4067bb
Update scripts
Jan 8, 2026
693cfb6
Update scripts
Jan 12, 2026
35d8ec2
Update scripts
Jan 12, 2026
8f95a56
Update scripts
Jan 12, 2026
261db15
Update scripts
Jan 14, 2026
f7e771a
Update scripts
Jan 14, 2026
b187169
Update scripts
Jan 14, 2026
8d27587
Update scripts
Jan 14, 2026
913721c
Update scripts
Jan 14, 2026
cf8616a
Update scripts
Jan 14, 2026
3406bc0
Update scripts
Jan 15, 2026
d55774a
Fix deprecated
Jan 15, 2026
0ceacfd
Replace old screenshot with a new one
comassky Jan 15, 2026
16dde76
Update
Jan 19, 2026
880407a
Update
Jan 19, 2026
1011636
Update
Jan 20, 2026
be253de
Update
Jan 21, 2026
dda08c6
Update
Jan 25, 2026
2d14a19
Update
Jan 27, 2026
07f31b8
Update libs
comassky Feb 9, 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
36 changes: 17 additions & 19 deletions .github/workflows/docker-dev-native.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,17 @@ on:
branches: ["develop"]
workflow_dispatch:

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

env:
REGISTRY: ghcr.io
IMAGE_NAME: ${{ github.repository }}
GRAALVM_VERSION: "25"
NODE_VERSION: "v24.12.0"
PNPM_VERSION: "10.28.2"
MAVEN_VERSION: "3.9.11"

jobs:
test:
Expand All @@ -28,20 +35,21 @@ jobs:
distribution: "temurin"
cache: maven

- name: Setup pnpm
uses: pnpm/action-setup@v4
with:
version: ${{ env.PNPM_VERSION }}


- name: Set up Node.js & pnpm
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: "24.12.0"
cache: "npm"
node-version: ${{ env.NODE_VERSION }}
cache: "pnpm"
cache-dependency-path: src/main/web/pnpm-lock.yaml
- name: Install pnpm globally
working-directory: src/main/web
run: npm install -g pnpm@10.26.2

- name: Install dependencies (pnpm)
working-directory: src/main/web
run: pnpm install
run: pnpm install --frozen-lockfile --prefer-offline

- name: Run backend tests
run: mvn test -DargLine="--enable-native-access=ALL-UNNAMED"
Expand Down Expand Up @@ -74,7 +82,7 @@ jobs:
- name: Set up Maven
uses: stCarolas/setup-maven@v5
with:
maven-version: "3.9.12"
maven-version: ${{ env.MAVEN_VERSION }}

- name: Cache Maven packages
uses: actions/cache@v4
Expand All @@ -84,16 +92,6 @@ jobs:
restore-keys: |
${{ runner.os }}-maven-

- name: Cache Node.js modules
uses: actions/cache@v4
with:
path: |
src/main/web/node_modules
~/.npm
key: ${{ runner.os }}-node-${{ hashFiles('src/main/web/package-lock.json') }}
restore-keys: |
${{ runner.os }}-node-

- name: Build Native Executable
run: |
mvn -B clean package -Pnative \
Expand Down
36 changes: 17 additions & 19 deletions .github/workflows/docker-native.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,17 @@ on:
branches: ["main"]
workflow_dispatch:

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

env:
REGISTRY: ghcr.io
IMAGE_NAME: ${{ github.repository }}
GRAALVM_VERSION: "25"
NODE_VERSION: "v24.12.0"
PNPM_VERSION: "10.28.2"
MAVEN_VERSION: "3.9.11"

jobs:
test:
Expand All @@ -29,20 +36,21 @@ jobs:
distribution: "temurin"
cache: maven

- name: Setup pnpm
uses: pnpm/action-setup@v4
with:
version: ${{ env.PNPM_VERSION }}


- name: Set up Node.js & pnpm
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: "24.12.0"
cache: "npm"
node-version: ${{ env.NODE_VERSION }}
cache: "pnpm"
cache-dependency-path: src/main/web/pnpm-lock.yaml
- name: Install pnpm globally
working-directory: src/main/web
run: npm install -g pnpm@10.26.2

- name: Install dependencies (pnpm)
working-directory: src/main/web
run: pnpm install
run: pnpm install --frozen-lockfile --prefer-offline

- name: Run backend tests
run: mvn test
Expand Down Expand Up @@ -75,7 +83,7 @@ jobs:
- name: Set up Maven
uses: stCarolas/setup-maven@v5
with:
maven-version: "3.9.12"
maven-version: ${{ env.MAVEN_VERSION }}

- name: Cache Maven packages
uses: actions/cache@v4
Expand All @@ -85,16 +93,6 @@ jobs:
restore-keys: |
${{ runner.os }}-maven-

- name: Cache Node.js modules
uses: actions/cache@v4
with:
path: |
src/main/web/node_modules
~/.npm
key: ${{ runner.os }}-node-${{ hashFiles('src/main/web/package-lock.json') }}
restore-keys: |
${{ runner.os }}-node-

- name: Build Native Executable
run: |
mvn -B clean package -Pnative \
Expand Down
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,10 @@ src/main/web/dist/
src/main/web/dist-ssr/
src/main/web/stats.html

# Auto-generated files (committed for CI/CD)
# src/main/web/src/auto-imports.d.ts
src/main/web/.eslintrc-auto-import.json

# Test coverage
src/main/web/coverage/

Expand Down
47 changes: 7 additions & 40 deletions BUILD.md
Original file line number Diff line number Diff line change
@@ -1,45 +1,12 @@
# 🏗️ Single Build (CI/CD)

In CI, the Maven build (`./mvnw clean package`) runs all tests and produces the artifact used for Docker and native images. No build or tests are repeated in Docker/native steps: speed and consistency guaranteed.

- To build and test locally:
```bash
./mvnw clean package
```
- To build native (tests already passed):
```bash
./mvnw clean package -Pnative -DskipTests
```
git clone https://github.com/comassky/btc-node-dashboard.git

# Build and Run Guide

Complete guide for building and deploying the Bitcoin Node Dashboard.

## Prerequisites

**Required**: Java 25+, Maven 3.9+, Bitcoin Core with RPC enabled

**Optional**: Node.js v24.12.0 (for frontend development), pnpm 10.26.2 (recommended), npm 11.6.2, Docker

## 🚀 Quick Start

````bash
# Clone
git clone https://github.com/comassky/btc-node-dashboard.git
cd btc-node-dashboard

```bash

# 🏗️ Build & Run Guide

This guide explains how to build and deploy the Bitcoin Node Dashboard.

## Prerequisites

**Required:** Java 25+, Maven 3.9+, Bitcoin Core with RPC enabled
**Required:** Java 25+, Maven 3.9.11+ (Maven Wrapper included), Bitcoin Core with RPC enabled

**Optional:** Node.js 24+ (v24.12.0 recommended), pnpm 10.26.2 (recommended), npm 11.6.2, Docker
**Optional:** Node.js 24+ (v24.12.0 recommended), pnpm 11.6.2 (recommended), npm 11.6.2, Docker

## 🚀 Quick Start

Expand All @@ -51,10 +18,10 @@ cd btc-node-dashboard

# Configure RPC

export RPC_HOST=localhost
export RPC_PORT=8332
export RPC_USER=your_username
export RPC_PASS=your_password
export BITCOIN_RPC_HOST=localhost
export BITCOIN_RPC_PORT=8332
export BITCOIN_RPC_USER=your_username
export BITCOIN_RPC_PASSWORD=your_password

# Start backend with hot reload

Expand Down Expand Up @@ -105,7 +72,7 @@ cd src/main/web
# Install frontend dependencies (recommended: pnpm)
pnpm install
# or, if pnpm is not installed:
npm install -g pnpm@10.26.2
npm install -g pnpm@10.27.0
pnpm install
```

Expand Down
50 changes: 37 additions & 13 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -1,33 +1,57 @@
# 🧩 Monorepo & Développement Frontend
# 🧩 Monorepo & Frontend Development

Le projet utilise un workspace pnpm pour la gestion des dépendances frontend (voir `src/main/web/pnpm-workspace.yaml`).
The project uses a pnpm workspace for frontend dependency management (see `src/main/web/pnpm-workspace.yaml`).

## Installation des dépendances frontend
## Installing frontend dependencies

```bash
cd src/main/web
pnpm install
# ou, si pnpm n'est pas installé :
npm install -g pnpm@10.26.2
# or, if pnpm is not installed:
npm install -g pnpm@10.27.0
pnpm install
```

## Scripts utiles
## Useful Scripts

- `pnpm dev` : serveur de développement Vite
- `pnpm build` : build de production
- `pnpm test` : tests unitaires frontend (Vitest)
- `pnpm test:ui` : UI de tests
- `pnpm coverage` : couverture de tests
- `pnpm dev` : Vite development server with hot reload
- `pnpm build` : production build with optimizations
- `pnpm test` : frontend unit tests (Vitest)
- `pnpm test:ui` : interactive test UI
- `pnpm coverage` : test coverage report
- `pnpm prettier` : format code with Prettier

Les workflows CI utilisent pnpm pour garantir la cohérence des dépendances.
CI workflows use pnpm to ensure dependency consistency.

## Performance Optimizations

The frontend is highly optimized for performance:

- **Bundle Size**: 144KB Brotli (~10% reduction from previous 160KB)
- **Chart.js Tree-Shaking**: Explicit imports instead of 'chart.js/auto' (-16KB)
- **Component Optimization**: Removed 1375+ redundant Tooltip instances from peer tables
- **Lazy Loading**: Async component imports with defineAsyncComponent
- **CSS Optimization**: Tailwind CSS 4 with Lightning CSS for faster builds
- **Compression**: Brotli and Gzip compression enabled

### Key Optimizations Made

1. **Chart.js**: Switched from 'chart.js/auto' to explicit imports (ArcElement, DoughnutController, etc.)
2. **Tooltips**: Replaced Vue Tooltip components with native HTML title attributes in peer tables
3. **Icons**: Using unplugin-icons with tree-shaking, added @iconify-json/simple-icons for official brand logos
4. **Removed Dependencies**: Eliminated PWA plugin, cssnano (replaced by Lightning CSS), postcss
5. **Component Memoization**: Added v-once for static cells, computed properties for formatted values
6. **Animations**: Disabled unnecessary Chart.js animations for instant rendering

When contributing, please maintain these optimizations and avoid re-introducing removed dependencies.

---
# Versions used

- Java 25
- Quarkus 3.30.5
- Quarkus 3.31.2
- Node.js v24.12.0
- pnpm 10.28.2
- npm 11.6.2

# 🛠️ CI & Quality
Expand Down
12 changes: 6 additions & 6 deletions DOCKER.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,17 +10,17 @@ https://github.com/comassky/btc-node-dashboard/pkgs/container/btc-node-dashboard

---

**Note CI :** Les workflows GitHub Actions utilisent `pnpm` pour installer les dépendances frontend avant de builder les images Docker. Voir `.github/workflows/docker.yml`, `docker-native.yml` et `docker-dev-native.yml`.
**CI Note:** GitHub Actions workflows use `pnpm` to install frontend dependencies before building Docker images. See `.github/workflows/docker.yml`, `docker-native.yml` and `docker-dev-native.yml`.


### Run Native Image (Recommended)

```bash
docker run -d -p 8080:8080 \
-e RPC_HOST=<HOST> \
-e RPC_PORT=<PORT> \
-e RPC_USER=<USER> \
-e RPC_PASS=<PASSWORD> \
-e BITCOIN_RPC_HOST=<HOST> \
-e BITCOIN_RPC_PORT=<PORT> \
-e BITCOIN_RPC_USER=<USER> \
-e BITCOIN_RPC_PASSWORD=<PASSWORD> \
-e WS_POLLING_INTERVAL=5 \
-e MIN_OUTBOUND_PEERS=8 \
-e LOG_LEVEL=INFO \
Expand Down Expand Up @@ -79,7 +79,7 @@ Images are published automatically by the GitHub Actions native workflows:
Examples:

```bash
docker pull ghcr.io/comassky/btc-node-dashboard:1.4.0-SNAPSHOT
docker pull ghcr.io/comassky/btc-node-dashboard:1.5.0-SNAPSHOT
docker pull ghcr.io/comassky/btc-node-dashboard:develop
```

Expand Down
Loading
Loading