From 542f6d8e3f975cb111da31f4985f757306ccf4d2 Mon Sep 17 00:00:00 2001 From: Jared Dunbar Date: Sat, 7 Feb 2026 10:37:32 -0500 Subject: [PATCH 01/18] Several improvements to the webpage with updated resources --- index.html | 138 +++++++++++++++++------- meshcore-resources.html | 204 ++++++++++++++++++++++++++++++++++++ meshcore.svg | 68 ++++++++++++ resources.html | 225 ++++++++++++++++++++++++++++++++++++++++ 4 files changed, 596 insertions(+), 39 deletions(-) create mode 100644 meshcore-resources.html create mode 100644 meshcore.svg create mode 100644 resources.html diff --git a/index.html b/index.html index 414618e..abf38cc 100644 --- a/index.html +++ b/index.html @@ -145,7 +145,7 @@ .btn-group { display: flex; gap: 1em; - flex-wrap: nowrap; + flex-wrap: wrap; justify-content: center; } .btn-groups { @@ -153,6 +153,18 @@ flex-direction: column; gap: 1em; } + .section-title { + margin: 0.5em 0 0; + font-size: 1rem; + text-transform: uppercase; + letter-spacing: 0.08em; + color: #2C2D3C; + } + .section { + display: flex; + flex-direction: column; + gap: 0.75em; + } .btn-small { display: inline-block; margin-top: 0.5em; @@ -207,6 +219,9 @@ flex-direction: column; align-items: center; } + .section-title { + text-align: center; + } .btn { width: 100%; justify-content: center; @@ -251,44 +266,89 @@
- - \ No newline at end of file + diff --git a/meshcore-resources.html b/meshcore-resources.html new file mode 100644 index 0000000..ef0cee1 --- /dev/null +++ b/meshcore-resources.html @@ -0,0 +1,204 @@ + + + + + + CT Mesh MeshCore Resources + + + + + + + + +
+
+

MeshCore Resources

+ +

Community-run Web Tools

+
+

These tools use data reported to our MQTT server by nodes across the state.

+
    +
  • MeshCore Map NEW! - live map showing MeshCore nodes
  • +
  • MeshCore Wardriving Map NEW! - coverage maps for MeshCore (you can also contribute!). Note: a new app is in testing and may supersede this.
  • +
+
+ +

Official Links

+

meshcore.co.uk

+

flasher.meshcore.co.uk

+
Note: the flasher requires WebSerial or Web Bluetooth support in your browser.
+ +

MQTT

+

Our MQTT broker is uplink-only and designed for fixed nodes across the state to serve as gateway nodes. Its purpose is not to bridge gaps or extend mesh coverage, but to report local traffic to our own web-based tools for analytical data and metrics to assess the mesh's performance. This role is best suited for stable, well-placed nodes with reliable coverage.

+

MeshCore MQTT uplink uses meshcoretomqtt on a Raspberry Pi or similar Linux computer with the service installed. This configuration stanza goes in your .env.local file after the first two MQTT servers that upload to analyzer.letsmesh.net. This also requires a custom firmware. See custom repeater firmware setup.

+ +
+ +
# MQTT Broker 3 - CT Mesh
+MCTOMQTT_MQTT3_ENABLED=true
+MCTOMQTT_MQTT3_SERVER=mqtt.ctmesh.org
+MCTOMQTT_MQTT3_PORT=1883
+MCTOMQTT_MQTT3_USE_TLS=false
+MCTOMQTT_MQTT3_USERNAME=meshdev
+MCTOMQTT_MQTT3_PASSWORD=large4cats
+
+ + Back to CT Mesh +
+ + + diff --git a/meshcore.svg b/meshcore.svg new file mode 100644 index 0000000..2ecb872 --- /dev/null +++ b/meshcore.svg @@ -0,0 +1,68 @@ + + + + +Created by potrace 1.16, written by Peter Selinger 2001-2019 + + + + + + + + + + + + diff --git a/resources.html b/resources.html new file mode 100644 index 0000000..58d8641 --- /dev/null +++ b/resources.html @@ -0,0 +1,225 @@ + + + + + + CT Mesh Meshtastic Resources + + + + + + + + +
+
+

Meshtastic Resources

+ +

Mesh Channels

+

Default (Primary) Channel

+

Most CT chatter occurs on the default LongFast channel.

+

Name: LongFast or (blank)

+

Key: AQ==

+

Key size: Default or 1 byte

+ +

CT's established community secondary channel

+

Name: ConnNet

+

Key: pJgk5XqJY8Ar+jSqC5W81g==

+

Key size: 128 bit

+ +

MQTT

+

Our MQTT broker is uplink-only and designed for fixed nodes across the state to serve as gateway nodes. Its purpose is not to bridge gaps or extend mesh coverage, but to report local traffic to our own map and other web-based tools for analytical data and metrics to assess the mesh's performance. This role is best suited for stable, well-placed nodes with reliable coverage. If that describes your setup, follow the steps at on this page to get set up.

+ +

Key Settings

+
+

MQTT > Enabled > ON

+

MQTT > Encryption Enabled > ON

+

MQTT > Map Report > OFF

+

MQTT > Root Topic > msh/US/CT

+

MQTT > Address > mqtt.ctmesh.org

+

MQTT > Username > meshdev

+

MQTT > Password > large4cats

+

MQTT > TLS Enabled > OFF

+

Channels > Primary Channel > Positions Enabled > ON

+

Channels > Primary Channel > Approximate Location > (set as desired)

+

Channels > Primary Channel > MQTT Uplink > ON

+

Channels > Primary Channel > MQTT Downlink > OFF

+

Settings > Modules > Neighbor Info > ON

+

LoRa > Ok to MQTT > ON

+
+ +

Note: CT Mesh's MQTT server is bridged and uplinks to the MQTT servers for both meshtastic.liamcottle.net and meshmap.net.

+ +

Community-run Web Tools

+
+

These tools use data reported to our MQTT server by nodes across the state.

+
    +
  • Meshtastic Map - live map of Meshtastic nodes CT Mesh has heard
  • +
  • Malla - deeper packet-level metrics and mesh performance insights fed from MQTT
  • +
  • PotatoMesh NEW! - packet, chat, node list, and map fed from RF on Box Mountain
  • +
  • MeshInfo legacy, partially broken - MQTT gateway setup info, secondary map, graphs, message history, etc.
  • +
+
+ +

Infrastructure Nodes

+

Important: Infrastructure roles like ROUTER, REPEATER, ROUTER_CLIENT, or ROUTER_LATE are rarely appropriate. Unless your node is sitting on top of one of the tallest buildings in Hartford with clear line-of-sight across the region, using these roles will hurt more than help. For almost everyone, the correct choice is CLIENT. If you think you've got a node that truly warrants an infrastructure role, reach out first - we'd rather make sure it benefits the mesh than inadvertently weakens it.

+ + Back to CT Mesh +
+ + + -- 2.49.0 From 0db84fcbee34ce28a40a72d0bcf23f6aa4387dfd Mon Sep 17 00:00:00 2001 From: Jared Dunbar Date: Sat, 7 Feb 2026 12:24:39 -0500 Subject: [PATCH 02/18] Updates --- index.html | 37 +++++++++++++++++++++++++++++++------ wheel.svg | 2 ++ 2 files changed, 33 insertions(+), 6 deletions(-) create mode 100644 wheel.svg diff --git a/index.html b/index.html index abf38cc..fbeb396 100644 --- a/index.html +++ b/index.html @@ -74,6 +74,8 @@ border-radius: 30px; padding: 3em 3em 2em 3em; margin: 1em; + width: min(100%, 900px); + max-width: 900px; box-shadow: 0 0 10px rgba(0, 0, 0, 0.15); color: #000000; position: relative; @@ -121,18 +123,21 @@ color: #000000; border: none; padding: 1em 1.75em; - border-radius: 15px; + border-radius: 999px; cursor: pointer; font-weight: bold; margin-top: 0.5em; font-size: 17px; text-align: left; text-decoration: none; + box-sizing: border-box; + flex: 1 1 240px; + max-width: 260px; } .btn-text { display: flex; flex-direction: column; - line-height: 0.7; + line-height: 1.1; } .btn-text small { font-size: 12px; @@ -142,11 +147,16 @@ height: 30px; filter: brightness(0); } + .btn-discord { + background-color: #7289da; + color: #ffffff; + } .btn-group { display: flex; gap: 1em; flex-wrap: wrap; justify-content: center; + width: 100%; } .btn-groups { display: flex; @@ -155,10 +165,12 @@ } .section-title { margin: 0.5em 0 0; + padding-top: 0.75em; font-size: 1rem; text-transform: uppercase; letter-spacing: 0.08em; color: #2C2D3C; + text-align: center; } .section { display: flex; @@ -217,7 +229,7 @@ } .btn-group { flex-direction: column; - align-items: center; + align-items: stretch; } .section-title { text-align: center; @@ -227,6 +239,12 @@ justify-content: center; padding: 0.8em 1em; font-size: 16px; + text-align: center; + max-width: 100%; + flex: none; + } + .btn-text { + align-items: center; } } @@ -268,10 +286,10 @@
+ + Wheel Icon +
+ Wardrive Contribution + Upload wardrive data +
+
Info Icon
diff --git a/wheel.svg b/wheel.svg new file mode 100644 index 0000000..8f30de3 --- /dev/null +++ b/wheel.svg @@ -0,0 +1,2 @@ + + -- 2.49.0 From c93f87dd8b35d1f2b5039dd3f4c6748e8cbbc374 Mon Sep 17 00:00:00 2001 From: Jared Dunbar Date: Sat, 7 Feb 2026 18:28:50 -0500 Subject: [PATCH 03/18] fixed links --- index.html | 5 ++++- meshcore-resources.html | 4 ++++ resources.html | 4 ++++ 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/index.html b/index.html index fbeb396..1dd32a9 100644 --- a/index.html +++ b/index.html @@ -60,6 +60,10 @@ justify-content: center; position: relative; } + a, + a:visited { + color: #000000; + } .overlay { position: fixed; top: 0; @@ -196,7 +200,6 @@ border-top: 1px solid #ccc; } .site-footer a { - color: #757684; text-decoration: none; } .site-footer a:hover { diff --git a/meshcore-resources.html b/meshcore-resources.html index ef0cee1..c29c24f 100644 --- a/meshcore-resources.html +++ b/meshcore-resources.html @@ -27,6 +27,10 @@ justify-content: center; padding: 2em 0; } + a, + a:visited { + color: #000000; + } .overlay { position: fixed; top: 0; diff --git a/resources.html b/resources.html index 58d8641..ef8f361 100644 --- a/resources.html +++ b/resources.html @@ -27,6 +27,10 @@ justify-content: center; padding: 2em 0; } + a, + a:visited { + color: #000000; + } .overlay { position: fixed; top: 0; -- 2.49.0 From bc23226733b07b773cb3639c4e141cdd85a2187c Mon Sep 17 00:00:00 2001 From: Noah Date: Tue, 10 Feb 2026 13:33:37 -0500 Subject: [PATCH 04/18] changes & fixes. fewer buttons, fix scrolling issue with page top cut off, rejigger resources pages with resources on top, other minor cosmetics. --- .DS_Store | Bin 0 -> 6148 bytes index.html | 141 ++++++++++---------- meshcore-resources.html | 19 +-- resources.html => meshtastic-resources.html | 25 ++-- 4 files changed, 92 insertions(+), 93 deletions(-) create mode 100644 .DS_Store rename resources.html => meshtastic-resources.html (97%) diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..5008ddfcf53c02e82d7eee2e57c38e5672ef89f6 GIT binary patch literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0 - - + + - + @@ -21,7 +21,7 @@ - + @@ -48,7 +48,7 @@ margin: 0; padding: 0; width: 100%; - height: 100%; + min-height: 100%; } body { font-family: "Roboto", sans-serif; @@ -77,9 +77,9 @@ background-color: #EBEBEB; border-radius: 30px; padding: 3em 3em 2em 3em; - margin: 1em; - width: min(100%, 900px); - max-width: 900px; + margin: 2em; + width: min(100%, 700px); + max-width: 700px; box-shadow: 0 0 10px rgba(0, 0, 0, 0.15); color: #000000; position: relative; @@ -122,7 +122,7 @@ .btn { display: flex; align-items: center; - gap: 8px; + gap: 12px; background-color: #67EA94; color: #000000; border: none; @@ -151,10 +151,38 @@ height: 30px; filter: brightness(0); } - .btn-discord { - background-color: #7289da; + .btn-discord, + .btn-discord:visited { + background-color: #5865F2; color: #ffffff; } + .btn-discord img { + filter: brightness(0) invert(1); + } + .btn-meshcore, + .btn-meshcore:visited { + background-color: #2B3A4E; + color: #ffffff; + } + .btn-meshcore img { + filter: brightness(0) invert(1); + } + a.btn[target="_blank"]::after { + content: ""; + width: 16px; + height: 16px; + margin-left: auto; + background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3.5 8.5L8.5 3.5M5 3.5h3.5V7'/%3E%3C/svg%3E") no-repeat center; + background-size: contain; + flex-shrink: 0; + opacity: 0.4; + } + .btn-discord::after { + display: none; + } + .btn-meshcore::after { + filter: invert(1) !important; + } .btn-group { display: flex; gap: 1em; @@ -232,23 +260,20 @@ } .btn-group { flex-direction: column; - align-items: stretch; + align-items: center; } .section-title { text-align: center; } .btn { - width: 100%; - justify-content: center; + width: 340px; + max-width: 100%; + justify-content: flex-start; padding: 0.8em 1em; font-size: 16px; - text-align: center; - max-width: 100%; + text-align: left; flex: none; } - .btn-text { - align-items: center; - } } /* Further adjustments for devices with a viewport width of 480px or less */ @@ -256,8 +281,6 @@ .splash-box { padding: 1.5em; margin: 1em; - width: 90%; - min-width: 250px; } .logo { width: 120px; @@ -282,7 +305,7 @@
@@ -290,10 +313,10 @@
@@ -302,38 +325,24 @@

Meshtastic

@@ -341,39 +350,25 @@

MeshCore

diff --git a/meshcore-resources.html b/meshcore-resources.html index c29c24f..d76de5a 100644 --- a/meshcore-resources.html +++ b/meshcore-resources.html @@ -74,7 +74,7 @@ } .note { background: #F5F5F5; - border-left: 4px solid #67EA94; + border-left: 4px solid #2B3A4E; border-radius: 8px; padding: 0.75em 1em; margin: 0.75em 0 0.5em; @@ -98,8 +98,8 @@ position: absolute; top: 0.75em; right: 0.75em; - background-color: #67EA94; - color: #000000; + background-color: #2B3A4E; + color: #ffffff; border: none; border-radius: 10px; padding: 0.4em 0.75em; @@ -112,8 +112,8 @@ align-items: center; justify-content: center; gap: 8px; - background-color: #67EA94; - color: #000000; + background-color: #2B3A4E; + color: #ffffff; border: none; padding: 0.75em 1.5em; border-radius: 15px; @@ -122,8 +122,10 @@ font-size: 15px; text-decoration: none; } - .back-link { + .back-link, + .back-link:visited { margin-top: 1.5em; + color: #ffffff; } @media (max-width: 800px) { body { @@ -156,7 +158,8 @@

These tools use data reported to our MQTT server by nodes across the state.

@@ -180,7 +183,7 @@ MCTOMQTT_MQTT3_USERNAME=meshdev MCTOMQTT_MQTT3_PASSWORD=large4cats
- Back to CT Mesh + ← Back to CT Mesh