A comprehensive digital platform powering beach patrol operations, member management, and lifesaving services across Australia.
8.5 years of continuous development delivering a mission-critical operations platform.
Six integrated modules powering beach safety operations.
Complete patrol lifecycle: rostering, sign-on, live operations, statistics recording, and sign-off. 615K positions across 348 beaches. 9.9 avg members/patrol.
Asset inventory for IRBs, RWCs, motors. Pre/post operation checklists. 21K inspections, 1.4K issues across 511 entities.
Dual-system integration with SurfGuard and SurfCom. 676 entities reporting. Peak year: 9,899 incidents (2024).
6-level risk scoring (Low to Critical). 14x growth since 2019. 3,782 unique assessors across 930 beaches.
Watercraft operation logging for IRBs and RWCs. 41K member entries, 90K comments. 328 entities. PDF/CSV exports.
Centralised data synced from SLSA API. 3.5M award links, 43K active patrol members. Qualification tracking and eligibility.
The complete digital workflow for a beach patrol operation.
Imported from
SLSA API
Beach status
Equipment
Attendance
Contact info
GPS tracking
Weather updates
Hazard/Rescue
Statistics
Final stats
Photo of day
Completion
Data sent to
SLSA central
How the platform grew from a single patrol roster to a full operations suite.
Key milestones from inception to today.
A modern, production-grade stack built for reliability.
A 20-month architectural transformation from legacy SOAP to modern REST API.
slsa-laravel-api PackageA purpose-built Laravel SDK replacing the legacy SOAP integration.
From first commit (Dec 2023) to production SDK powering all SLSA API communication.
Native iOS & Android wrapper built with Capacitor 6.0 that loads the Laravel web app dynamically at runtime — enabling zero-downtime updates without App Store rebuilds.
Connected to the SLSA ecosystem and third-party services.
Core data: patrols, members, assets, awards, incidents
Real-time weather data for all beaches
Incident feed via webhooks
Member database, incident recording
Geocoding and location services
Real-time WebSocket events
File and image storage
Error tracking and alerting
Real numbers from the production database — March 2026.
| State | Entities | Patrols | Members | Beaches |
|---|---|---|---|---|
| NSW | 277 | 21,687 | 22,269 | 133 |
| QLD | 169 | 7,022 | 8,909 | 57 |
| VIC | 69 | 2,648 | 4,007 | 36 |
| WA | 51 | 2,418 | 4,792 | 41 |
| SA | 29 | 1,821 | 2,527 | 22 |
| TAS | 21 | 546 | 795 | 14 |
| NT | 11 | 34 | 46 | 3 |
Users active across patrols, assessments, powercraft, and more.
| Name | Patrols | Assess. | PWC | GPS | Comments |
|---|---|---|---|---|---|
| Joshua Warne | 4,264 | 208 | 8 | 110 | 68 |
| Nathan Amos | 1,580 | 23 | 11 | 83 | 73 |
| Jai Gardner | 1,570 | 24 | 24 | 411 | 180 |
| Yvette Rutherford | 1,054 | 15 | 27 | 1,134 | 70 |
| Michael Wilson | 109 | 43 | 67 | 13 | 742 |
| Warren Howard | 56 | 83 | 124 | 48 | 480 |
Automated data synchronisation keeping the Operations App in sync with SLSA central systems.
api:entities — Org structure & units
19:20
api:awards — Qualifications & certifications
19:30
api:beaches — Beach location data
19:40
api:asset_types — Equipment definitions
20:00
api:members — Member sync (2-day lookback)
20:00
api:assets — Equipment inventory
20:22
api:patrol-position-types — Role definitions
20:25
api:patrol-variables — Form field config
api:patrols — Import 60 days of patrol rosters
22:45
api:patrols-sign-off — Sync sign-off data
api:patrols-stats — Submit patrol statistics to API
6am–6pm
api:ird-incidents — Sync incidents from IRD
update_awards — Update position award requirements
21:20
assign_qualified — Assign qualified positions to members
api:members:webhook — Webhook member reconciliation
02:00
logs:cleanup — Prune old API logs & positions
every 5m
horizon:snapshot — Queue monitoring snapshot
/webhook/member/update/webhook/v2/patrol/update
Performance metrics from 287K+ logged API calls via the slsa-laravel-api package.
/gear/entity-assets — 35.6K calls, 0.3s/patrol-season-dates — 35.4K calls, 0.06s/members — 31.9K calls, 2.9s/beach-hazards — 1.1K calls, 0.17s/sso/auth — 39% errors (failed logins)/patrol-log/create — 19% errors, 3.8s (duplicates)/sign-on-lifeguard — 13% errors/sign-on-club — 12% errors/radio-logs — 5.1s avg (max 333s!)/patrols/roster — 4.2s avg/oauth/auth — 4.1s avg
| Version | Date | Highlights |
|---|---|---|
| v1.0.0 | Dec 2017 | First production release — patrol roster and management |
| v1.4.0 | Sep 2019 | Gear management, inspections, powercraft logs |
| v1.5.0 | Nov 2019 | Risk assessments (SRR) introduced |
| v1.6.0 | Jun 2020 | Incident management from SurfGuard/IRD |
| v1.8.0 | Mar 2021 | Laravel 8 upgrade, SOAP fixes for PHP 7.4 |
| v1.11.0 | Oct 2022 | Laravel 9, water safety assessments |
| v1.13.0 | Dec 2022 | LIMSOC risk assessment integration |
| v1.18.0 | Sep 2023 | API V2 integration begins |
| v2.0.0 | Sep 2024 | Laravel 10, SLSA API V2, Nova 4, Pulse, unbranded app |
| v2.10.0 | Sep 2025 | Full API V2 migration, legacy SOAP removed, PHP 8.2 |
| v2.13.0 | Jan 2026 | Critical performance fix — DB indexing, query optimisation |
6,251 commits from 13 contributors over 8.5 years.
Active development continues with major modernisation initiatives.
Complete frontend modernisation from Vue 2 + Bootstrap to Vue 3 + Quasar. Pinia state. Vite build. Targeting v3.0.0.
Progressive framework upgrades with active branches for Laravel 11 and 12.
Playwright E2E testing covering auth, dashboard, gear. Expanding across all critical workflows.
Surface clear, actionable error messages from the SLSA V2 API to end users. Currently errors are logged but often shown as generic failures. Need user-friendly messages for validation errors, expired awards, and duplicate submissions.
Ensure patrol masters complete the full sign-on and sign-off workflow. Currently 40.9% of positions are signed on, 29.5% marked present. Need reminders, progress indicators, and prevention of incomplete submissions.
No structured feedback mechanism. Need in-app feedback, bug reporting, and satisfaction tracking.
Current webhooks handle 2,821 member updates/day but patrol webhooks (18/day) are underutilised. Investigate expanding real-time sync to replace scheduled cron jobs — enabling instant roster updates, live incident feed, and immediate award/qualification changes without waiting for the nightly sync window.
The SLS Operations Platform continues to evolve, keeping Australian beaches safe through digital innovation.