# 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](screenshot-1.png) ![Messaging Screenshot](screenshot-2.png) ## 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:** ```bash cd meshcore-usb-dashboard ``` 2. **Install dependencies:** ```bash npm install ``` 3. **Configure environment variables:** Copy the example environment file and edit it: ```bash cp .env.example .env ``` Edit `.env` with your settings, especially the name of your serial port (i.e. COM10) 4. **Create your first user:** ```bash npm run create-user ``` Follow the prompts to create a username and password. 5. **Start the application:** ```bash npm start ``` For development with auto-reload: ```bash npm run dev ``` 6. **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