A lightweight Signal K server plugin for managing local nautical charts, written in strict TypeScript. Supports MBTiles, S-57 ENC, BSB raster, and world basemaps with automatic conversion via Podman containers.
- Local Chart Management: MBTiles (raster and vector), with folder organization and enable/disable toggles
- Download Manager: Built-in download queue with progress tracking and ZIP extraction
- Chart Catalog: Browse and download charts from chartcatalogs.github.io with automatic update notifications
- S-57 ENC Conversion: Convert IENC/ENC charts to vector MBTiles with full S-52 symbology in Freeboard-SK
- BSB Raster Conversion: Convert BSB/KAP raster charts and Pilot Charts to raster MBTiles
- World Basemaps: GSHHG and OSM coastline basemaps for offline use
- Custom Upload: Upload your own ZIP files containing S-57 ENC or BSB charts for conversion
- Modern Web UI: Material Design 3 interface with drag-and-drop
- Dual API Support: Compatible with Signal K v1 and v2 API
- Open your Signal K server admin interface
- Navigate to Appstore
- Search for "Charts Provider Simple"
- Click Install
cd ~/.signalk
npm install signalk-charts-provider-simple- Navigate to Server → Plugin Config → Charts Provider Simple
- Set your chart directory path (defaults to
~/.signalk/charts-simple) - Enable the plugin
- Restart Signal K server
Access the plugin's web interface through your Signal K server:
http://[your-server]:3000/plugins/signalk-charts-provider-simple/
The interface provides four tabs:
-
Manage Charts:
- View all charts with metadata (name, bounds, zoom levels, size)
- Enable/disable, organize into folders, upload, delete, rename
- S-57 charts shown with ENC badge
- Converting charts shown with progress indicator
-
Download from URL:
- Download charts directly from any URL
- Supports
.mbtilesand.ziparchives - Download queue with progress tracking
-
Convert:
- Upload ZIP files containing S-57 ENC (.000) or BSB raster (.kap) charts
- Drag-and-drop or click to select files
- Configurable zoom levels for S-57 conversion
- Live conversion progress with log viewer
-
Chart Catalog:
- Dynamic catalog from chartcatalogs.github.io
- One-click download for MBTiles charts (NOAA)
- Download & convert for S-57 ENC, BSB raster, Pilot Charts, and basemaps
- Automatic update notifications (Signal K delta + tab badge)
- Category filtering (MBTiles / RNC / IENC / General)
| Format | Source | Conversion | Output |
|---|---|---|---|
| MBTiles | Direct download | None needed | Raster or vector tiles |
| S-57 ENC (.000) | IENC catalogs, custom upload | GDAL + tippecanoe (Podman) | Vector MBTiles with S-52 styling |
| BSB Raster (.kap) | RNC catalogs, custom upload | GDAL (Podman) | Raster MBTiles (PNG) |
| Pilot Charts (.kap in .tar.xz) | Pilot catalog | GDAL (Podman) | Raster MBTiles (PNG) |
| GSHHG Basemap | General catalog | GDAL (Podman) | Raster MBTiles (PNG) |
| OSM Basemap | General catalog | GDAL (Podman) | Raster MBTiles (PNG) |
- Freeboard SK — full S-52 symbology for S-57 vector charts
- OpenCPN
- Node.js >= 22.5 — uses the built-in
node:sqlitemodule, no native compilation needed - Not supported on Cerbo GX — Venus OS ships Node.js 20, which lacks the
node:sqlitemodule. Use v1.6.x if you need Cerbo support.
To convert S-57 ENC, BSB raster, Pilot Charts, or basemaps, Podman must be installed. The plugin uses standard container images that are pulled automatically on first use:
ghcr.io/osgeo/gdal:alpine-small-latest— GDAL for format conversionghcr.io/dirkwa/signalk-charts-provider-simple/tippecanoe— tippecanoe for vector tile generation (multi-arch: amd64 + arm64)
# Debian / Ubuntu / Raspberry Pi OS
sudo apt install podman
# Fedora / RHEL
sudo dnf install podmanMBTiles charts work without Podman. Chart conversion is limited to 2 concurrent jobs.
This plugin includes a feature to edit chart metadata (chart names) in MBTiles files. This feature is intended for personal use only.
Important:
- The Signal K community is not responsible for any illegal use of this feature
- Modified charts are automatically marked with "USER MODIFIED - DO NOT DISTRIBUTE - PERSONAL USE ONLY" in the description field
- Do not distribute modified charts - this may violate copyright laws
- Use this feature responsibly and only for organizing your personal chart library
Inspired by Signal K Charts Plugin by Mikko Vesikkala.
Contributions are welcome! Please feel free to submit a Pull Request.
For issues and feature requests: