Complete guide to managing the interactive map, calendar, gallery & postcard popups
Bindi's Adventures page (BindiTails.com/adventures.html) shows an interactive map, calendar, and photo gallery of all trips. It reads data from one file: trips.json.
To add/edit a trip: Update trips.json → push to GitHub → site updates in ~2 minutes automatically.
Key features:
| File | What It Does | Edit? |
|---|---|---|
trips.json | All trip data (the only file you regularly edit) | ✅ Yes |
adventures.html | Public map/calendar/gallery page | ❌ Don't touch |
adventure-builder.html | Admin tool to create/edit trips | ❌ Don't touch |
adventure-manual.html | This manual! | ❌ Don't touch |
images/ | All photos for the site | ✅ Add photos here |
| Location | Purpose |
|---|---|
C:\BindiTails™\ | Live Git repo — push from here |
C:\BindiTails™\website\ | Backup copy — same files, just in case |
Each trip is a JSON object. Here's the full schema with every field:
{
"lat": 35.0456,
"lng": -90.0490,
"title": "Graceland — Memphis, TN",
"date": "2025-08-09",
"displayDate": "August 9, 2025",
"caption": "Bindi channeled her inner Elvis 🕶️",
"photo": "images/graceland.jpg",
"photos": ["images/graceland.jpg", "images/graceland2.jpg"],
"address": "Graceland, Memphis, TN",
"directions": "https://www.google.com/maps/search/?api=1&query=Graceland",
"link": "https://www.facebook.com/BindiTails™/posts/graceland",
"aboutPlace": "Home of the King! Elvis lived here from 1957 until 1977.",
"bindiThoughts": "10/10 would sniff again. Elvis had great taste. 🕶️",
"postmark": "Memphis, TN",
"stampIcon": "🎸",
"tags": ["music", "landmark", "road trip"],
"locationGroup": "Memphis"
}
| Field | What It Is | Required? |
|---|---|---|
lat / lng | GPS coordinates (auto from map click) | Recommended |
title | Name of the stop | ✅ Yes |
date | Date in YYYY-MM-DD format | ✅ Yes |
displayDate | How date shows on site ("August 9, 2025") | Auto-fills |
caption | Short fun one-liner | Optional |
photo | Primary photo path (shown first) | Optional |
photos | Array of ALL photo paths (enables carousel) | Optional |
address | Human-readable address/place name | Optional |
directions | Google Maps link (auto-generated from address) | Auto-fills |
link | Social media post, website, any URL | Optional |
aboutPlace | Fun fact about the location | Optional |
bindiThoughts | Bindi's diary entry (write in her voice!) | Optional |
postmark | City/State for postcard stamp | Auto-fills from address |
stampIcon | Custom emoji for the stamp (see Section 10) | Optional (auto-picks) |
tags | Array of category tags for filtering | Optional |
locationGroup | Group name for related stops | Optional |
{ }"like this""lat": 35.04"photos": ["img1.jpg", "img2.jpg"]BindiTails.com/adventure-builder.htmlC:\BindiTails™\BindiTails.com/adventure-builder.htmlUse this to: Fix wrong photos, update diary entries, change addresses, add tags, etc.
C:\BindiTails™\trips.json in Notepad or VS Code{ to })]}"photo": "images/graceland.jpg", "photos": [ "images/graceland.jpg", "images/graceland-bindi.jpg", "images/graceland-gates.jpg" ],
photo field is the "primary" (shown first). The photos array has ALL photos including the primary. The carousel shows ◀ ▶ arrows when there's more than one.github.com/susanbuchanan-75287/BindiTails/edit/master/trips.jsonC:\BindiTails™\images\graceland.jpg (lowercase, no spaces)"photo": "images/graceland.jpg"images/ folder"photo": "images/trip-main.jpg", "photos": ["images/trip-main.jpg", "images/trip-2.jpg", "images/trip-3.jpg"]
Right-click any photo on Facebook/Instagram → "Copy image address" → paste as the photo value.
When you click a paw marker on the map, it shows a flippable postcard:
Each stamp automatically picks an icon based on the trip's tags or title:
| Location Type | Icon | What Triggers It |
|---|---|---|
| Dog parks | 🐕 | Tag "dog park" or title contains "dog park" |
| Battlefields | ⚔️ | Tag "battlefield" or title contains "battlefield" |
| Museums | 🏛️ | Tag "museum" or title contains "museum" |
| Universities | 🎓 | Tag "university" or title contains "virginia tech" |
| Music landmarks | 🎸 | Title contains "graceland" or "elvis" |
| Pet stores | 🛒 | Tag "pet store" or title contains "petsmart" |
| Camps/daycare | 🏕️ | Tag "camp" or title contains "camp bow"/"dogtopia" |
| Bars/restaurants | 🍻 | Tag "bar" or title contains "bark bar"/"uptown pup" |
| Road stops | 🚗 | Tag "rest area" or title contains "rest area"/"quiktrip" |
| Parks/nature | 🌳 | Tag "park" or "nature" |
| Default | 🐾 | Anything else |
To force a specific icon, add "stampIcon": "🎸" to the trip in trips.json, or fill in the "Stamp Icon" field in the builder.
The adventures page has three views — toggle with the buttons at the top:
Add tags to any trip in trips.json:
"tags": ["dog park", "dallas", "friends"]
The filter bar at the top of the adventures page lets visitors filter by tag. Tags also determine the stamp icon (see Section 10).
cd C:\BindiTails™ git add . git commit -m "Add new trip: Graceland" git push origin master
Your changes are already pushed! Check the live site.
Use your GitHub username and a Personal Access Token (not your password). You can create a token at: github.com/settings/tokens
C:\BindiTails™\website\ so both locations stay in sync.images/filename.jpg (relative to site root)Bindi.JPG ≠ bindi.jpgCtrl+Shift+Rgit status should say "nothing to commit""tags": ["dog park"]) or set "stampIcon": "🐕" manuallyFans email photos to Hello@BindiTails.com via the button on the homepage.
C:\BindiTails™\images\BindiTails.com/adventure-builder.htmlC:\BindiTails™\trips.jsoncd C:\BindiTails™ && git add . && git commit -m "New trip" && git push origin masterC:\BindiTails™\images\"photos" array| Domain | Purpose | Points To |
|---|---|---|
| BindiTails.com | 🏠 Primary site | GitHub Pages (custom domain) |
| BindiTails.dog | 🐕 Alternate/fun domain | URL forward → BindiTails.com |
| barkparks.dog | 🗺️ Bark Ranger Maps | URL forward → BindiTails.com/trail-maps.html |
| binditales.dog | 🔀 Typo protection | URL forward → BindiTails.com |
buchana3buchana3| Problem | Cause | Fix |
|---|---|---|
| BindiTails.com shows 404 "no GitHub Pages site here" | CNAME file missing from repo, or GitHub Pages custom domain setting cleared | 1) Check repo has CNAME file containing BindiTails.com2) Go to Settings → Pages → re-enter BindiTails.com → Save3) Ensure "Enforce HTTPS" is checked |
| BindiTails.dog / barkparks.dog shows "connection not secure" | Porkbun SSL certificate hasn't provisioned yet (takes 10-15 min after setting up forwards) | Wait 15 minutes. If still broken: Porkbun → Domain → SSL tab → check status. The _acme-challenge TXT records handle auto-provisioning. |
| BindiTails.dog doesn't redirect at all | URL forwarding not set or DNS records wrong | Porkbun → Domain Management → BindiTails.dog → URL Forwarding → should show forward to https://BindiTails.com. If DNS tab shows A records pointing to 185.199.x.x, delete them — those conflict with forwarding. |
| barkparks.dog goes to wrong page | Forward URL incorrect | Porkbun → barkparks.dog → URL Forwarding → should be https://BindiTails.com/trail-maps.html |
| Site loads but looks broken (no CSS/images) | Mixed content or wrong base URL | Hard refresh (Ctrl+Shift+R). Check browser console for errors. All links should be relative (no hardcoded domain in HTML). |
| Changes not showing on live site | Didn't push to GitHub, or Pages hasn't rebuilt | 1) git push origin master2) Check Actions tab for build status 3) Hard refresh browser (Ctrl+Shift+R) 4) Wait 2-5 min for GitHub Pages deploy |
| "DNS check unsuccessful" in GitHub Pages settings | DNS propagation delay or wrong records | Wait 5-10 min, click "Check again". Verify with dnschecker.org that A records show 185.199.108/109/110/111.153 |
| Domain expired / not renewing | Auto-renew off or payment failed | Porkbun → Domain Management → check auto-renew is ON for all 3 .dog domains. Update payment method if needed. |
💡 Pro tip: If something breaks and you're panicking — the site still works at susanbuchanan-75287.github.io/BindiTails while you fix the custom domain. That URL always works.
userStamps subcollection)hiddenGems array in hidden-gems.htmlhidden-gems.html#GemName| Location | What | Protection Level |
|---|---|---|
| GitHub.com (cloud) | Full site code + every version ever committed | ☁️ Survives house fire, laptop death, everything. This is your #1 backup. |
| C:\BindiTails™\BindiTails™\ (laptop) | Working copy with uncommitted changes | 💻 Local only — lost if laptop dies. Push often! |
| Firebase Firestore (cloud) | User check-ins, stamps, leaderboard data | ☁️ Google-managed. Automatic backups. |
Before making big changes, create a safety branch:
C:\BindiTails™\BindiTails™\git checkout -b backup-may31 (creates a named snapshot)git checkout master (go back to working branch)git checkout backup-may31 -- . (restores ALL files from backup)git commit -m "Reverted to backup" && git push origin mastergit revert HEAD --no-edit && git push origin master| Mistake | Fix |
|---|---|
| Deleted a file by accident | git checkout HEAD -- filename.html (restores from last commit) |
| Messed up a file and already saved | git checkout HEAD -- filename.html (same — resets to last pushed version) |
| Pushed something broken to live site | git revert HEAD --no-edit && git push origin master(un-does last commit, pushes fix) |
| Deleted CNAME file (site goes 404!) | Create file CNAME containing just BindiTails.comgit add CNAME && git commit -m "Restore CNAME" && git push origin masterWait 30-60 seconds for site to come back. |
| Accidentally committed secrets/passwords | Change the password immediately. Then: git revert HEAD --no-edit && git push. Note: the old version still exists in git history — that's why you change the password FIRST. |
| Everything is broken and I don't know what I did | Nuclear option: git log --oneline -10 (find last good commit), then git reset --hard abc1234 && git push --force origin master. ⚠️ This erases recent history! |
Everything you need to rebuild from scratch:
git clone https://github.com/susanbuchanan-75287/BindiTails.git| Service | Username | Where Passwords Live |
|---|---|---|
| GitHub | susanbuchanan-75287 | Your email for password reset |
| Porkbun (.dog domains) | buchana3 | Email: susanabuchanan@yahoo.com |
| GoDaddy (BindiTails.com DNS) | Your GoDaddy account | Same email for reset |
| Firebase (check-in data) | Google account | Project: see admin.html for project ID |
| ElevenLabs (voice) | API key in environment variable | Regenerate at elevenlabs.io if lost |
CNAME — contains BindiTails.com. Site goes 404 without it!data/parks.json — all 209 parks (your main database)trips.json — all adventuresindex.html — homepageFile: data/parks.json — currently 209 parks
Each park object has these fields:
| Field | Type | Description |
|---|---|---|
name | string | Display name (must be unique) |
state | string | 2-letter code: TX, CA, PR, DC, etc. |
lat, lng | number | GPS coordinates (Google Maps → right-click → "What's here?") |
visited | boolean | true if Bindi has been there |
bucket | boolean | true if it's on the bucket list |
nps | boolean | true = official NPS BARK Ranger park |
rules | string | Dog rules summary |
desc | string | Short description |
website | string | Park website URL |
img | string | Image URL (or "" for auto-generated) |
Open data/parks.json and add to the end of the array (before the last ]):
{
"name": "My New State Park",
"state": "TX",
"lat": 30.1234,
"lng": -97.5678,
"visited": false,
"bucket": true,
"nps": false,
"rules": "Leashed dogs on all trails.",
"desc": "Beautiful park with great hiking.",
"website": "https://example.com",
"img": ""
}
nps: true ONLY for official NPS sites that have the BARK Ranger program. State parks, local dog parks = nps: falseFind the park in data/parks.json, change:
"visited": false → "visited": true
Then commit and push:
git add data/parks.json git commit -m "Mark [Park Name] as visited" git push origin master
Filters on trail-maps.html:
| Button | Shows | Logic |
|---|---|---|
| 🌍 All Parks | Everything (209) | No filter |
| 🏛️ BARK Rangers | NPS parks you haven't visited or bucket-listed | nps && !visited && !bucket |
| 🐾 Bindi's Visited | Parks Bindi has been to | visited === true |
| 🎯 Bucket List | Dream parks to visit | bucket === true |
| 🐕 Local & Fun | Non-NPS parks (state/local/dog parks) | nps === false |
| 📍 Not Yet Explored | Parks not visited AND not on bucket list | !visited && !bucket |
Type filters (second row): Dog Parks, National Parks, State Parks, Historic, Trail, Beach, Forest, Zoo
Zoom behavior: BARK Rangers and All Parks exclude Alaska/Hawaii from zoom bounds so contiguous US fills the screen. If geolocation is on, filters zoom to your nearest parks.
File: hidden-gems.html — edit the hiddenGems array (~line 160-398)
Also in: trail-maps.html — the nearbyGems array (~line 791-823)
nearbyGems array in trail-maps.html so it appears on park popup cards.Gems link format: hidden-gems.html#Gem Name (URL-encoded). The page auto-scrolls and highlights.
| Date | Change | Commit |
|---|---|---|
| May 31, 2026 | Terms & Privacy footer link added to ALL 14 public pages + nav links fixed on gallery/shop/activities/hidden-gems | 61afd7f |
| May 31, 2026 | Nav consistency: fixed Adventures & Bark Ranger pages to match site-wide nav (Hidden Gems, Pack Leaders, Check-In links) | 2b9a14b |
| May 31, 2026 | BARK Map: default shows US (not bucket list), type icons horizontal above map, removed personal filters (Visited/Bucket/Local) | 8bea958 |
| May 31, 2026 | Hidden Gems: Unsplash photos on all cards, postcard popup modal (photo LEFT + info RIGHT), share button, removed BringFido links | 278f244 |
| May 31, 2026 | BARK Map: WCAG accessibility — ARIA roles, 44px touch targets, sr-only labels, focus-visible outlines | 7850b6e |
| May 31, 2026 | BARK Map: side-by-side layout (filters sidebar LEFT, map RIGHT) | 7884e1b |
| May 31, 2026 | Added Graceland Memphis TN (confirmed dog-friendly, visited) — 344 total | 6f4b27d |
| May 31, 2026 | 🎉 ALL 50 STATES + DC + PR covered! 343 total parks/gems | 0e00e62 |
| May 31, 2026 | Added OH/MI/VA gems: Colonial Williamsburg, Lakenenland, Field of Corn (303) | 8e6a29b |
| May 31, 2026 | Added hidden gem photo ops: LOVE signs, WV swings, roadside icons (289-295) | d549f86 |
| May 31, 2026 | Added 64 state parks (30 WV + 34 nationwide) + Cadillac Ranch (274) | 30871f0 |
| May 31, 2026 | Added 15 state parks + 2 Puerto Rico NPS sites (209 total) | 72d8a38 |
| May 31, 2026 | BARK Rangers filter: excludes visited/bucket, zooms contiguous US only | 72d8a38 |
| May 31, 2026 | NPS info panel: translucent glass + forced black text | 72d8a38 |
| May 31, 2026 | Gem links are now clickable (direct link to hidden-gems.html#name) | a99cd9c |
| May 31, 2026 | SMS/Facebook/Messenger share on nearby place cards | e39c3a5 |
| May 31, 2026 | Website + phone + directions on nearby hotels/dining/activities | 402e410 |
| May 31, 2026 | Replaced useless NPS filter with Local & Fun + Not Yet Explored | 402e410 |
| May 31, 2026 | Added Backup & Disaster Recovery section + DISASTER-RECOVERY.md | b295dc3 |
git log --oneline -30 in terminal, or visit GitHub Commits
🐾 Bindi Tails Adventure Manual • Last updated: June 1, 2026
Need help? Open Copilot and ask! Or email Hello@BindiTails.com