Overview
The Central Valley Mesh website is a static HTML/CSS/JS site hosted on GitHub Pages. There's no build step, no framework, no CMS — just files you can edit directly.
The repo lives at github.com/CentralValleyMesh/centralvalleymesh.github.io. To contribute, you fork it, make your changes, and open a pull request. A maintainer will review and merge it.
File Structure
Here's what the repo looks like and where things live:
index.html ← home page
/about/
docs.html
builds.html ← build listing page
community.html
bounties.html ← bounty board
events.html ← add events here
map.html
contact.html
contribute.html ← this page
found.html ← QR code landing page
404.html
builds/
_template/ ← copy this folder
index.html
magnetic-sticky-node/
index.html
magnet-build-1.jpg
magnet-build-2.jpg
your-build-name/ ← your folder goes here
index.html
your-photo.jpg
docs/
getting-started.html
faq.html
tools.html
config-wizard.html ← interactive config generator
css/
style.css ← global styles
home.css ← home page only
images/ ← put your photos here
js/
main.js ← nav, theme toggle
stats.js ← live node/route widgets (index page)
Add a Build Post
Each build lives in its own folder inside builds/ alongside its own images. Copy the builds/_template/ folder, rename it to your build name, and edit the index.html inside.
Then add a card for it on builds.html — copy an existing card and update the title, description, tags, image path, and link.
<!-- and replace these values: -->
Title: Your Build Name
Author: Your Discord username
Date: Month DD, YYYY
Category: Community
Tags: Hardware names, features (e.g. T-Beam, Solar, Portable)
Images: Put photos in your build folder, reference as ./your-photo.jpg
Parts: Link to Amazon/Adafruit/etc for each component
builds/your-build-name/photo.jpg). JPG or WebP recommended, keep files under 1MB each. Reference them in your build page as ./your-photo.jpg or just photo.jpg.Edit Existing Content
Every page is a plain HTML file. Open it in any text editor, find the text you want to change, edit it, and save. Here's exactly how to edit each common thing:
Add or edit an event
Open events.html. Copy any existing <div class="event-card"> block and paste it above or below. Fill in the date, title, type badge (meetup, online, deploy, or workshop), location, and description. For past events, add class="event-card past" to the outer div. Generate calendar links at calndr.link.
Add a hardware bounty
Open community.html and find the <section id="hardware-bounty"> section (search for "Bounty Board"). Copy an existing bounty card block, update the location name, description, and the "Volunteer in Discord" link. The dashed placeholder card at the bottom marks where to add new ones.
Add a community to the California list
Open community.html and find the right region block (Northern CA, Central Valley, or Southern CA). Copy an existing <div class="comm-card" data-href="..."> block and update the abbreviation badge, name, description, and links. The JS click handler is automatic.
Update MQTT / network settings
The config card appears on the home page (index.html — search for config-card-header) and in the Config Wizard (docs/config-wizard.html — update the readonly input values and the JS gen() function). Also update docs/getting-started.html and docs/faq.html to match.
Update the announcement bar
Open js/main.js and find the ANNOUNCE object at the top. Set enabled: true, update the message string (supports HTML links), and change the id to a new unique string — this clears everyone's dismissed state so they'll see the new message. Set enabled: false to hide it globally.
Add a FAQ question
Open docs/faq.html and copy an existing .faq-item block. Add your question as the button text and the answer inside the .faq-body div. Place it under the relevant .section-label heading.
Add a tool or resource
Open docs/tools.html. For a CVM tool, add to the "CVM Tools" .grid-2 section at the top. For an external tool, copy an existing .doc-card link under the right section (Firmware, Network, Apps) and update the URL, title, and description.
Typos and copy changes
Just open the relevant HTML file in any text editor, use Ctrl+F to find the text you want to change, edit it, and save. Every page is a self-contained HTML file — nothing will break.
Submit a Pull Request
Fork the repository
Go to the repo on GitHub and click Fork in the top right. This creates your own copy.
Make your changes
You can edit files directly on GitHub using the pencil icon, or clone the repo locally. For build posts with images, cloning locally is easier.
cd centralvalleymesh.github.io
Preview locally
Run a local server to see your changes before submitting:
# then open http://localhost:8080
Commit and push
git commit -m "Add [your-build-name] build post"
git push
Open a pull request
Go back to the main repo on GitHub. You'll see a banner prompting you to open a PR. Click it, add a short description of what you changed, and submit.
No-Code Option
Not comfortable with GitHub? No problem at all — drop your content in the #builds or #website channel on Discord and a maintainer will post it for you.
For a build post, include:
Photos of your build (exterior and interior if possible)
Parts list with links (Amazon, Adafruit, etc.)
Short description of what it does, any tricks or gotchas
Content Guidelines
Keep it relevant
Content should be about Meshtastic, LoRa mesh networking, or community activity in or around the Central Valley.
No promotion or spam
No affiliate links, no paid promotions, no selling. Plain Amazon/manufacturer links for parts are fine.
Honest and accurate
If something didn't work or was hard, say so. Honest build notes are more useful than perfect-sounding ones.
Follow the community guidelines
Same rules as Discord — no politics, religion, SHAT content, or inappropriate material. See the community guidelines for the full list.
Questions? Ask in #website on Discord — someone will help you get your contribution posted.
Join Discord