AgentToolHub
Skill

frontend-expert

frontend-expert — a Claude Code skill from jorijn/meshcore-stats

Features

  • ✓**Data Collection** - Metrics from local companion and remote repeater nodes
  • ✓**Interactive Charts** - SVG charts with day/week/month/year views and tooltips
  • ✓**Auto Telemetry Charts** - Repeater `telemetry.*` metrics are charted automatically when telemetry is enabled (`telemetry.voltage.*` excluded)
  • ✓**Statistics Reports** - Monthly and yearly report generation
  • ✓**Light/Dark Theme** - Automatic theme switching based on system preference

Installation Guide

Docker (Recommended)

#### 1. Clone the Repository

bash
git clone https://github.com/jorijn/meshcore-stats.git
cd meshcore-stats

#### 2. Configure

Copy the example configuration and edit it:

bash
cp meshcore.conf.example meshcore.conf

Minimal required settings:

ini
# Repeater identity (required)
REPEATER_NAME=Your Repeater Name
REPEATER_PASSWORD=your-admin-password

# Display names
REPEATER_DISPLAY_NAME=My Repeater
COMPANION_DISPLAY_NAME=My Companion

See [meshcore.conf.example](meshcore.conf.example) for all available options.

Optional telemetry display settings:

ini
# Enable environmental telemetry collection from repeater
TELEMETRY_ENABLED=1

# Telemetry display units only (DB values stay unchanged)
DISPLAY_UNIT_SYSTEM=metric   # or imperial

#### 3. Create Data Directories

bash
mkdir -p data/state out
sudo chown -R 1000:1000 data out

The container runs as UID 1000, so directories must be writable by this user. If sudo is not available, you can relaxed the permissions using chmod 777 data out, but this is less secure.

#### 4. Configure Serial Device

Create docker-compose.override.yml to specify your serial device:

yaml
services:
  meshcore-stats:
    devices:
      - /dev/ttyACM0:/dev/ttyACM0

Ensure your user has serial port access:

bash
sudo usermod -aG dialout $USER
# Log out and back in for changes to take effect

#### 5. Start the Containers

bash
docker compose up -d

After the various collection and render jobs has run, the dashboard will be available at http://localhost:8080.

#### Verify Installation

bash
# Check container status
docker compose ps

# View logs
docker compose logs -f meshcore-stats

Common Docker Commands

bash
# View real-time logs
docker compose logs -f meshcore-stats

# Restart after configuration changes
docker compose restart meshcore-stats

# Update to latest version (database migrations are automatic)
docker compose pull && docker compose up -d

# Stop all containers
docker compose down

# Backup database
cp data/state/metrics.db data/state/metrics.db.backup

Note: docker compose down preserves your data. Use docker compose down -v only if you want to delete everything.

Manual Installation (Alternative)

For environments where Docker is not available.

#### Requirements

  • Python 3.11+ (3.14 recommended)

  • SQLite3

  • uv
  • #### Setup

    bash
    cd meshcore-stats
    uv venv
    source .venv/bin/activate
    uv sync
    cp meshcore.conf.example meshcore.conf
    # Edit meshcore.conf with your settings

    #### Cron Setup

    Add to your crontab (crontab -e):

    cron
    MESHCORE=/path/to/meshcore-stats
    
    # Companion: every minute
    * * * * * cd $MESHCORE && .venv/bin/python scripts/collect_companion.py
    
    # Repeater: every 15 minutes
    1,16,31,46 * * * * cd $MESHCORE && .venv/bin/python scripts/collect_repeater.py
    
    # Charts: every 5 minutes
    */5 * * * * cd $MESHCORE && .venv/bin/python scripts/render_charts.py
    
    # Site: every 5 minutes
    */5 * * * * cd $MESHCORE && .venv/bin/python scripts/render_site.py
    
    # Reports: daily at midnight
    0 0 * * * cd $MESHCORE && .venv/bin/python scripts/render_reports.py

    Serve the out/ directory with any web server.

    Reviews