The Web User Interface for ALICE O2 InfoLogger. The application operates in two distinct modes:
Screenshot of the current interface, running locally against a fake InfoLoggerServer emitting synthetic logs:

%, empty value toggling)nodejs >= 22.xILG is a Node.js API Gateway and Single-Page Application built on top of the @aliceo2/web-ui framework. It serves as a unified interface to two separate operational backends: a MariaDB database for historical queries and an InfoLoggerServer TCP endpoint for live log streaming.
HttpServer from @aliceo2/web-ui and attaches a WebSocket. lib/api.js instantiates the services, wires them to the DB and InfoLoggerServer, and registers HTTP routes. Config is loaded by configProvider.js.POST /query and GET /query/stats → QueryController → QueryService. Both routes are gated by serviceAvailabilityCheck.InfoLoggerReceiver, parses each TCP line per the InfoLogger protocol, and broadcasts to connected clients over WebSocket.getUserProfile / saveUserProfile. The named-profile endpoint (getProfile) is a stub - it returns the hard-coded defaults regardless of the profile requested.Static files served from public/; no build step. A lightweight MVC app on top of @aliceo2/web-ui.
tableLogs*.js, inspector, status bar, context menu, zoom, etc.). logFilter/LogFilter.js owns the filter inputs. table/Table.js holds shared table state.git clone https://github.com/AliceO2Group/WebUi.git
cd WebUi/InfoLogger
npm ci
cp config-default.js config.js
Edit config.js for the setup you’re using below.
npm run dev runs the backend under nodemon. The frontend has no hot reload - refresh the browser to pick up changes.
mysql and infoLoggerServer in config.js at the remote host and port.npm start, then open http://localhost:8080.The bundled fake InfoLoggerServer emits a log every 0-100 ms, shuffling through test/live-simulator/fakeData.json.
infoLoggerServer in config.js to localhost:6102.npm run simul.npm run dev.Requires Docker Desktop.
In a working dir, create compose.yaml:
services:
mariadb:
image: mariadb
restart: unless-stopped
ports: ['3306:3306']
environment:
MARIADB_ROOT_PASSWORD: root # this is just an example, not intended to be a production configuration
phpmyadmin:
image: phpmyadmin
restart: unless-stopped
ports: ['9090:80']
environment:
- PMA_HOST=mariadb
Gives you a MariaDB server with phpMyAdmin on the latest image. Pin a specific version (e.g. mariadb:11.5) by changing the image: tag.
docker compose up -d.root / root → New → create database INFOLOGGER.In config.js:
mysql: {
host: '127.0.0.1',
user: 'root',
password: 'root',
database: 'INFOLOGGER',
port: 3306,
timeout: 60000,
retryMs: 5000,
},
npm run dev - startup should log Connection to DB successfully established: 127.0.0.1:3306.npm test - eslint + mocha. npm run mocha runs the suite alone.
npm run eslint - config in eslint.config.js. Lint failures block CI.ILG integration tests live in the system-configuration repo and run in its pipeline against a pipeline ILG. They are not executed by this repo’s CI. To run them locally, clone system-configuration and run npx mocha ilg-main.js.
⚠️ If you change behaviour covered by integration tests, update the system-configuration suite during the next ILG release.
Runs on every PR touching InfoLogger/**. Must pass to merge:
npm test (eslint + mocha) on ubuntu-latest.npm run coverage with a CodeCov report; coverage cannot decrease.tgz archive of the project for local-repository installations.Runs the integration suite against a pipeline instance. Runs separately from this repo’s CI, so run the suite locally before merging and flag any required changes to the team at release time.