- Amateur Radio Nets
- Call Sign Lookup and Search
- Amateur Radio Operator Statistics
- Propagation and Hot Region maps
- Fast and responsive, even on low-power devices
- Fully functional on both phones and desktops
- Works offline with optional paid data pack
- Fully serverless architecture (S3 + Lambda)
- Logic is shared between client and cloud
- No unnecessary personal information, including street addresses
- We don't pass stuff around — just write to local storage.
The next function will read from local storage. - Formatting of DATA is done in Lambda wherever possible to keep that formatting consistent across the client.
-
Write Search
- Rename saveNetLog() to postNetLogToLambda()
- Lambda: before looping through call signs, sort the list.
- Must use HTTPS GET so that it can be linked and indexed. This enables generating a manifest of all 2 million call signs and submitting it to Google, Bing, and DuckDuckGo.
- After rendering search results, dynamically update the
<title>
and<meta description>
for SEO/snippet targeting. - Trigger a Google Analytics
search
event for each query:
gtag('event', 'search', { search_term: 'VA7ZEB' })
- Update the URL using
pushState()
(orreplaceState()
) after each search so the results can be shared via direct link. Log a page view to Analytics with the updated URL. - Support field like name, firstname, lastname, city, region, location, certifications and operators like includes, excludes, startswith.
- All searches are substring matches by default.
- All search terms are combined using AND logic by default.
- Include client-side export options for CSV and JSON. No server-side processing is involved. If over 6 MB (Lambda's limit), return: “Your query matched over 100,000 results. Please narrow it by region, prefix, or license type. Maximum export size is 6MB.”
-
Sitemaps
- FCC/ISED imports will generate a sitemap index file named sitemap.xml (the standard filename crawlers check by default) that links to 40+ individual sitemap files (each containing up to 50,000 callsigns).
- Add
robots.txt
that references the sitemap.xml index for auto-discovery. - Submit these files to Google, Bing and Yandex once. Then automatically ping Google, Bing and Yandex once per night after sitemap generation.
-
Statistics
- Archive results on the first of every month to:
callsigns/archive/YYYY-MM-DD/*.json
- Provide a dropdown selector for archived snapshots in the Statistics UI, alongside the live dataset.
- Use Sortable (library) tables underneath Leaflet maps for most sections.
- Archive results on the first of every month to:
-
Video Outreach and Education
Create and publish short, high-impact videos to introduce new features and guide usage. Videos
will be prioritized over static help files and serve as the primary communication tool for
updates, onboarding, and outreach. Topics may include feature walkthroughs (e.g., Search,
Net Logging, Statistics), use-case demos (e.g., emergency nets, POTA tracking), and overall
philosophy. Begin with a launch video on BC Ham Radio, then continue producing content in step
with new deployments to drive traffic and user engagement. -
Sync
- Implement a simple but robust multidevice sync mechanism.
- All
write()
operations will be centralized instore.mjs
, where they automatically update alastUpdated
timestamp and trigger a debounced, best-effort sync every second. - Syncing is one-way and full-replace:
- If the client is newer, it overwrites the S3 copy.
- If S3 is newer, it overwrites the client's local storage and refreshes the page.
- This avoids conflict resolution entirely and keeps the model deterministic.
- Sync only runs on the nets page to minimize overhead.
- Future offline mode will support full net logging without connectivity, with automatic catch-up when reconnected.
-
Authentication Providers
Expand authentication options beyond Google to include Microsoft and Apple. This allows broader
user access for features that require login, such as personal contact logs, contest uploads, or
activation tagging. All auth will remain optional and privacy-respecting, with no unnecessary
personal data stored. Identity tokens will be used client-side to associate user actions with
their callsign only when needed. -
HF Propagation Map Design and deploy a real-time propagation map using Leaflet.js on the frontend and AWS Lambda + S3 on the backend. The system will aggregate data from PSK Reporter, RBN, NOAA, and N0NBH to show live HF band openings and active paths. A pre-warmed Lambda caches global propagation datasets and filters them per-user based on location, band, and mode. The frontend queries the Lambda via Function URLs and renders filtered results interactively on a map. Users can view real-time activity, greyline overlays, and solar indices, and simulate propagation from alternate locations. The architecture is fast, cost-effective, and scalable, with data updates every 5–15 minutes.
-
Hot Regions Map Build a Leaflet-based map that visualizes real-time ham activity using the same global datasets as the Propagation Map. Instead of path overlays, this map will show geographic clusters of active operators detected in the last 15 minutes. A heatmap layer will use color gradients—red for high activity, orange for moderate, yellow for light—to intuitively represent signal density by region. Users can filter by band or mode. The feature helps operators quickly spot hot areas of current activity, especially useful before nets, contests, or DX pursuits.
-
Refactoring for
store.mjs
andcoreLogic.mjs
Move business logic (lookups, statistics, certification parsing) into a pure, side-effect-free module (coreLogic.mjs
) to ensure consistent behavior between client and Lambda. -
Offline Call Sign Lookups The
prefix.json
files are loaded into memory when offline mode is enabled, mirroring the Lambda prefix-based memory cache.- Files are not downloaded by default.
- Offline access is a paid feature ($3 USD per download).
- Once loaded, lookups are instant and fully client-side.
-
Multiple NCOs To support real-time net control by multiple operators:
- A shared JSON file on S3 will be used for synchronization.
- Each NCO polls a Lambda function using the
LastModified
timestamp. - If an update is detected, the full dataset is returned.
- No WebSockets — architecture remains fully serverless.
- Local state is maintained using
localStorage
.
-
Personal Contact Logs Provide a lightweight system for hams to maintain personal contact logs, separate from contesting or activation events. This feature is designed for operators who want to casually track their QSOs without the pressure of competitive logging. Users will be able to log contacts manually or import them via ADIF. As a bonus, if the user is an NCO, contact logs can be auto-populated from participants in nets they control. Logs will be searchable by callsign, date, band, and mode, and exportable to CSV or ADIF. Data will be stored privately in S3 and rendered entirely client-side to ensure privacy and responsiveness. This provides a simple but reliable contact record for everyday amateur activity.
-
POTA/SOTA/IOTA Logs
Add support for displaying and optionally logging activations related to POTA (Parks on the Air), SOTA (Summits on the Air), and IOTA (Islands on the Air). Users will be able to search for or view activations by location, callsign, reference ID, or date. This feature may include public read-only views of recent activations, maps of current operations, and optional CSV or ADIF export. In future phases, logged-in users may upload or tag their own activations for integration with net logs or personal profiles. The system will stay lightweight and client-rendered, using public datasets where available. -
Contest Logs Implement support for uploading, viewing, and optionally sharing amateur radio contest logs. Users will be able to filter by contest name, callsign, band, mode, or date. The system will support standard log formats such as ADIF and Cabrillo, allowing easy integration from popular contest logging software. Contest logs may be displayed in tabular or summary form, with options for CSV download or per-QSO detail view. Future enhancements may include cross-referencing contest contacts with known callsign data, visualizing QSOs on a map, or integrating contest logs into user profiles or statistics dashboards. All processing will remain client-side or Lambda-backed, with storage in S3.
-
Maybe Later
- CAPTCHA on net log submissions
- Rate limiting and abuse protections
- Split VA7ZEB into its own AWS organization with separate prod and dev accounts
- Set up a dedicated Google Workspace for VA7ZEB.ca
-
Technovault
- Enable GitHub backups to Dropbox
- Enable Google Sites backups to Dropbox
-
Abongo
- Strip out all
_nFramework_
code - Ensure all search endpoints use HTTPS GET so they can be linked
- Add all completed searches to a dynamic manifest and submit to Google/Bing/DuckDuckGo
- Strip out all
-
Cloudmakers
- Implement Google login
- Enable display of photos not contained in albums
-
Work Scheduling
- Begin dividing your time across core projects:
- Abongo
- VA7ZEB.ca
- Cloudmakers
- Technovault
- Dymergent
- Begin dividing your time across core projects: