The RangerTrakβ’ application aids tracking & mapping CERT, ACS, wildland firefighters & other teams, 'rangers' & individuals roaming around, who are only reliably connected via HAM radio or other non-data supporting means. Teams or individuals can radio in their locations - in a variety of formats, and be centrally tracked. A single log of reports, locations, events and time is created for documentation and analysis. Most critically search area coverage can be determined and teams/individuals that have NOT reported in can be monitored.
This Progressive Web Application, or PWA, will largely run even if there is inconsistent, limited, or no cell, internet or data access at the command post. It runs entirely in a device's browser, allowing operation on most any simple, modern, basic web brower in the field. Rangers can radio in their locations - using a variety of location codes, and be centrally tracked.
Verbally transmitting & transcribing latitude & longitude coordinates can be very error prone and slow. Instead RangerTrak also permits other ways to report locations: by Street Address, Google PlusCodes, and perhaps What3Words. See https://en.wikipedia.org/wiki/Open_Location_Code#Other_geocode_systems for a list.
To use and see what this application does, simply browse to https://Rangertrak.org. Additional guidence follows,
- Open Source: free to use & available to enhance!
- Progressive Web App (PWA) this should be able to function (in the future, possibly with some degredation) even if the person using this at the command post has no or intermittent access to the Internet or cell system.
- Periodic reports can include an editable status field and include easily searched notes which can include mission specific, custom keywords.
- Tracks mission numbers and names, plus Operational Periods.
- Versions after 0.0.10 are generated with Angular & written in enterprise level Typescript, so will run on most modern web browsers, regardless of device/form factor.
- Supports recording locations as: lat/long (in Decimal Degrees, Degrees Minutes and Seconds, and Degrees and Decimal Minutes), or What3Words, Google +Codes, or physical Street Addresses. Location support may factor in bounding zones or proximity to a locality.
- Lists of reports and rangers can be saved to a CSV (comma seperated value) file for display, documentation and after action analysis - readible by any spreadsheet programs.
- Easy entry via auto-lookup of Ham Radio teams or individuals by tactical callsign.
- Field report statuses can be edited: name & color, future: icon/markers.
- View locations on Google and Leaflet/ESRI maps. (Google has yet to support offline/disconnected mapping, but is working on it for the future.) Maps also have overview/locator maps.
- Rangers can report in as individuals or teams: both are easily edited/sorted/filtered and then only that subset may be exported or displayed on maps.
- Source code documentation uses [https://compodoc.app/guides/jsdoc-tags.html]Compodoc
- Source code is evergreen: current with latest libraries (as of fall 2022)
- This project is moving to using milestones to show what is being worked on next. Dates are super approximate!
- Also see the Issues page for what we're working on in terms of bug fixes. Feel free to add your comments to them.
- To work with out flaws! In particular one often has to refresh some pages to get them to display - especially the Leaflet Maps page - or screen.
- Issues should be moving from a spreadsheet to the standard GitHub Issues Page
- Enhance map markers to better highlight paths, teams, statuses.
- Reload data from local files.
- Allow loading of additional map layers (e.g., an image of trails, local features) perhaps with https://github.com/publiclab/Leaflet.DistortableImage
- improved docs: screenshots and architectural diagrams.
- consider https://github.com/EventEmitter2/EventEmitter2 for multi-threaded msgs with service workers.
- consider adding heatmaps, or https://github.com/eurostat/gridviz
- Optionally publish field reports to a server if Internet access allows: for display at a central EOC or even by participants out in the field with data or cell coverage.
- BLOCKING: Removed hardcoded Google API key from the secrets.json file. Either create your own from the secrets template, or await my changes to SettingsService::Constructor() &/or GmapComponent::Loader
- GeoCoding an address
- All maps (for now)
- 3Word functionality (for now)
Simply visit https://www.RangerTrak.org and follow the Workflow below:
- Enter Mission info on theMission Settings Screen once, then
- Enter/edit participating rangers on the Rangers Page as needed, then
- Repeatedly enter reports on the Home (Entry) Screen
Moving to a different browser, or device will provide a 'fresh' RangerTrak environment. RangerTrakβs machinations are all local to each brand of browser (Firefox wonβt know what you did with Chrome or Edge), so that gives you a way to experiment.
All data is private: only stored locally in your browser's Local Storage.
So you get an idea of how it looks/works here's a typical workflow. (Click images for larger versions.)
WARNING: Before doing the following Be sure you have backed up and downloaded any previous mission data, via the Export Buttons on the Field Reports Page and Rangers Page Screens.
At the start of every mission and Op Period, come to this screen and enter mission and operational period parameters and the default location to simplify location entry for each field report. Some mapping parameters can also be adjusted. Field Report statuses can be edited as desired. The background incidentally shows RangerTrak being tested in a real-world exercise.
Secondly, at the start of an Operational Period, come to this screen to enter/edit/record rangers participating. Afterwards this displays Rangers participating in the exercise. This can refer to individuals and/or teams as desired. Rangers can be edited as needed, and optionally exported to a CSV spreadsheet.

Once those initial two steps are complete (i.e., the two screens above), users will just primarily use the Entry Screen, below, for most of the rest of the exercise or incident.
Most users will spend most of their time entering field reports from this 'home' or entry screen. It allows a 'scribe' to record 'Field Reporrts', i.e., ranger's locations and status reports.
- Start by enter any letters of a tactical call sign in the Who field. The app filters rangers with those letters for ready selection.
- Next, enter a location in any of the labeled formats. Derived addresses will then be displayed and mapped for your confirmation.
- When defaults to the current time. Edit it if the report was previoulsy recieved.
- What records the report status or nature, defaulting to "normal". You can enter freeform notes as desired too, possibly entering custom, unique incident specific keywords. Those can be filtered/searched for on the Field Reports Screen if desired.
- Submit your report. (Mistakes can generally be edited later on in the Field Reports Screen.) Once submitted a confirmation is briefly displayed and the form is automatically reset.
- The Reset button clears the form of all current data, so the scribe can start over with a clean field report.
This displays Field Reports that have been entered, and optionally a filtered subset of reports.

This displays Field Reports that have been entered, and optionally a filtered subset of reports.

The next screen displays Field Reports that have been entered, in a table or grid format, with the ability to filter, sort, and search reports on any field. Filtered reports can be mapped or exported to a CSV spreadsheet for documentation or later analysis.

This provides a bit more explaination about the application, its purpose, technologies used, how to report issues, and license model.

This screen is primarily used for debugging and reporting issues. It can also serve as a partial audit trail of actions taken during the mission.

- Browse to https://www.RangerTrak.org
- Go to Settings Page and under Advanced at the very bottom, click on βReset Settingsβ, then edit the fields as desired.
- Go to the Rangers Page, then under Advanced at the bottom, click on βDelete Rangersβ which should load the default ranger teams. (This will change in the future. Its convenient for testing though. You can rename Teams by clicking on the name. For ANY changes: under Advanced, remember to click βSave Rangersβ to preserve changes!
- Go to the Field Reports Page, then under Advanced at the bottom , click on βDelete ALL Field Reports from local storageβ β if there are any! (You may enter new reports or use the mint colored block below to βAdd some ## of Fake Reportsβ which auto generates some reports to experiment with.)
At the upper right of every screen, or additinoally on the Settings Page, You will have the option to "Install" the application, which just streamlines access with a shortcut. The application takes minimal space and doesn't consume resources in the background. You can uninstall it like any other app.
- NEW: Check out .vscode/SETUP.md for a complete VS Code workspace setup guide
- Also see contributing.md for contribution guidelines
- Fork
Github.com/eocOnline/Rangertrakto your own repository - Install Node.js (v18 or higher)
- Clone and setup:
git clone https://github.com/YOUR_USERNAME/rangertrak.git cd rangertrak npm install ng serve -o - Open in VS Code and install recommended extensions when prompted
For detailed setup instructions, environment configuration, and troubleshooting, see .vscode/SETUP.md.
- or Run
ng servefor a dev server. Navigate to http://localhost:4200/. The app will automatically reload if you change any of the source files.
ng build --configuration production
to serve it:
ng s -c production -o
old: http-server dist/rangertrak
ng run rangertrak:app-shell:developmentorng run rangertrak:app-shell:production- currently fails.- Then browse to
./dist/rangertrak/index.html - see https://angular.io/guide/app-shell for details
- Run
ng testto execute the unit tests via Karma. - None currently!
Run ng e2e to execute the end-to-end tests via a platform of your choice. To use this command, you need to first add a package that implements end-to-end testing capabilities.
- None currently!
- Plans to move to Puppeter, per https://blog.angular.io/introducing-puppeteer-schematics-test-your-angular-apps-with-ease-dea6947f6299
npm run compodoc to regenerate the doc.
compodoc -s to serve/view the doc at http://127.0.0.1:8080/
See https://compodoc.app/guides/usage.html and https://compodoc.app/ for details
Run npm run release per https://www.npmjs.com/package/standard-version
This updates bumps the version number in package.JSON & ChangeLog.md by an increment (& deletes package-lock.json?)
Then run git push --follow-tags origin main to publish to Github as a new release
Stage any changes (or add '--allow-empty' to the following), then
git commit -m "Release-As: 0.11.40"
Some details in service/settings.service.ts & app.component.ts
https://github.com/googleapis/release-please#how-do-i-change-the-version-number
To verify, also check/update package.json & package-lock.json
Follow this sequence to update your development environment:
node -v
npm -v
tsc --version
npm outdatedNote: Global npm installations on Windows require running PowerShell or Command Prompt as Administrator.
# Update npm to latest version (requires Admin on Windows)
npm install npm@latest -g
# Update TypeScript globally (requires Admin on Windows)
npm install -g typescript
# Update TypeScript type files (requires Admin on Windows)
npm install -g typings
# Update Angular CLI globally (requires Admin on Windows)
npm install -g @angular/cli@latest
# (Optional) Update Chocolatey packages - requires Admin permissions
choco upgrade allIf you get permission errors on Windows:
- Right-click PowerShell or Command Prompt and select "Run as Administrator"
- Or use a package manager like Chocolatey to update Node.js/npm:
choco upgrade nodejs
# Check for available Angular updates
npx ng update
# Update Angular core packages (add --force if needed for peer dependency warnings)
y
# Check for all package updates
npx npm-check-updates -u
# Install all updated dependencies
npm installnpm install --save --legacy-peer-depsnpm i yarn -g
yarn installAdditional Resources:
- Check https://update.angular.io/ for Angular-specific migration guides and required code changes between versions
- Use
npm outdatedto see which packages have newer versions available
Deploying via Google Firebase got WAY too complex with Google's recent security upgrades.
Now I just FTP it to https://RangerTrak.org
OLD:
ng deploy
ng add @angular/fire
From Angular Projects, 2nd ed. pg 119
See angular.json and firebase.json
See ARCHITECTURE.md for the updated visual architectural diagram.
classDiagram
direction TB
namespace Core {
class AppComponent
class AppRoutingModule
}
namespace Features {
class EntryComponent
class FieldReportsComponent
class RangersComponent
class LmapComponent
class GmapComponent
class SettingsComponent
class LogComponent
class AboutComponent
}
namespace Shared {
class HeaderComponent
class AlertsComponent
}
namespace Services {
class FieldReportService
class RangerService
class SettingsService
class LogService
class ClockService
class InstallableService
class GoogleGeocode
}
AppComponent --> AppRoutingModule : Uses
AppRoutingModule --> EntryComponent : Route
AppRoutingModule --> FieldReportsComponent : Route
AppRoutingModule --> RangersComponent : Route
AppRoutingModule --> LmapComponent : Route
AppRoutingModule --> GmapComponent : Route
AppRoutingModule --> SettingsComponent : Route
AppRoutingModule --> LogComponent : Route
AppRoutingModule ..> AboutComponent : Lazy Route
EntryComponent ..> FieldReportService
EntryComponent ..> RangerService
EntryComponent ..> SettingsService
EntryComponent ..> LogService
FieldReportsComponent ..> FieldReportService
FieldReportsComponent ..> SettingsService
FieldReportsComponent ..> LogService
RangersComponent ..> RangerService
RangersComponent ..> SettingsService
RangersComponent ..> LogService
LmapComponent ..> FieldReportService
LmapComponent ..> SettingsService
LmapComponent ..> LogService
GmapComponent ..> FieldReportService
GmapComponent ..> SettingsService
GmapComponent ..> LogService
GmapComponent ..> GoogleGeocode
SettingsComponent ..> SettingsService
SettingsComponent ..> LogService
LogComponent ..> LogService
LogComponent ..> SettingsService
HeaderComponent ..> SettingsService
HeaderComponent ..> ClockService
To get more help on the Angular CLI use ng help or go check out the Angular CLI Overview and Command Reference page.
https://eoc.online provides free tools for Emergency Operations Centers and local CERT/VOAD/Citizen Corps groups. For more information check out https://eoc.online. We'd LOVE to get your reports of use and suggestions for enhancement. To report issues please visit https://github.com/EOCOnline/rangertrak/issues.
Β©2022 eoc.online, under the MIT License
We encourage your feedback and contributions to this repository. Content suggestions and discussions (specific to RangerTrak) can be communicated in the following ways:
- GitHub βissues.β Each issue is a conversation about specific project work initiated by a member of the public.
- GitHub "discussions". Each discussion is a project communication forum. Discussions are not specific to elements of work like a pull request. We encourage you to browse and join in on discussions or start a new conversation by creating a new discussion.
- Direct changes and line edits to the content may be submitted through a "pull request" by clicking "Edit this page" on any site page in the repository. You do not need to install any software to suggest a change. You can use GitHub's in-browser editor to edit files and submit a pull request for your changes to be merged into the document. Directions on how to submit a pull request can be found on GitHub.
- Send your content suggestions or proposed revisions to the RangerTrak team via email to RangerTeam@eoc.online.
"(We) all agreed that this is a WOW program with high value added to SAR. I really hope you continue to refine it!"
β Michael Meyer, KB7MTM, Vashon ACS


