Meshcore Dashboard (USB-based)

A complete, self-contained Node.js web application for monitoring and managing a Meshcore client device via USB. Features real-time message tracking, GPS location mapping, and automatic data retention with secure authentication.

Dashboard Screenshot Messaging Screenshot

Features

  • Real-time USB Serial Integration - Automatically connects to Meshcore USB serial device and stores all messages
  • Interactive Map View - View GPS locations of all nodes on an interactive Leaflet map
  • Message Management - View message history and send messages to the mesh network
  • Node Monitoring - Track all nodes with detailed metadata including battery levels, signal strength, and telemetry
  • Secure Authentication - Username/password login with session management
  • Automatic Data Purging - Configurable cron job to automatically clean old data
  • Modern UI - Responsive, modern web interface with dark theme support
  • SQLite Database - All data stored locally in a SQLite database
  • Comprehensive Logging - Winston-based logging for debugging and monitoring

Prerequisites

  • Node.js 16.x or higher
  • npm or yarn
  • Access to a Meshcore device via USB-Serial

Installation

  1. Clone or navigate to the project directory:
cd meshcore-usb-dashboard
  1. Install dependencies:
npm install
  1. Configure environment variables:

Copy the example environment file and edit it:

cp .env.example .env

Edit .env with your settings, especially the name of your serial port (i.e. COM10)

  1. Create your first user:
npm run create-user

Follow the prompts to create a username and password.

  1. Start the application:
npm start

For development with auto-reload:

npm run dev
  1. Access the dashboard:

Open your browser and navigate to:

http://localhost:3000

Login with the username and password you created.

Data Retention

Configure automatic data purging:

  • DATA_RETENTION_DAYS: Number of days to keep data (default: 30)
  • PURGE_CRON_SCHEDULE: Cron schedule for purging (default: 0 2 * * * = daily at 2 AM)

You can also manually purge data from the Settings tab in the web interface.

Database

The application uses SQLite.

Database file location: data/meshtastic.db

Logging

Logs are stored in the logs/ directory:

  • combined.log - All log messages
  • error.log - Error messages only

Log level can be configured with LOG_LEVEL in .env (debug, info, warn, error).

Contributing

Contributions are welcome!

Security Considerations

  • Change default SESSION_SECRET in production
  • Use HTTPS in production (configure reverse proxy)
  • Regularly update dependencies
  • Use strong passwords for user accounts
  • Enable firewall rules to restrict access

License

MIT License

Support

For issues and feature requests, please open an issue on the project repository.

Acknowledgments

  • Meshcore project
  • OpenStreetMap for map tiles
  • All contributors and testers

Version: 1.0.0 Author: zyphlar Last Updated: 2026

Description
No description provided
Readme 201 KiB
Languages
JavaScript 73.4%
CSS 14.8%
HTML 11.8%