Surf Life Saving
Nano Solutions
Surf Life Saving Australia

SLS Operations
Platform

A comprehensive digital platform powering beach patrol operations, member management, and lifesaving services across Australia.

Est. September 2017 v2.13.0 Current Built by Nano Solutions March 2026
SLS Nano Solutions
01 — Overview

By the Numbers

8.5 years of continuous development delivering a mission-critical operations platform.

6,251
Git Commits
97
Releases
8.5
Years Active
13
Contributors


145+
DB Migrations
149
Vue Components
20
API Controllers
25
Artisan Commands
Git Commit History — 6,251 commits from Sep 2017 to Mar 2026
2017660
20181,288
20191,336
2020919
2021515
2022541
2023197
2024346
2025294
2026164
Peak: 2019 (1,336 commits) — Gear, Powercraft, and Assessment modules built. Lowest: 2023 (197) — Stability before API V2 migration.
SLS Nano Solutions
B1 — Platform

Core Modules

Six integrated modules powering beach safety operations.

🌊

Patrol Management 62K patrols

Complete patrol lifecycle: rostering, sign-on, live operations, statistics recording, and sign-off. 615K positions across 348 beaches. 9.9 avg members/patrol.

Gear & Equipment 55K assets

Asset inventory for IRBs, RWCs, motors. Pre/post operation checklists. 21K inspections, 1.4K issues across 511 entities.

🏥

Incident Reporting 52K incidents

Dual-system integration with SurfGuard and SurfCom. 676 entities reporting. Peak year: 9,899 incidents (2024).

⚠️

Risk Assessment 49K assessments

6-level risk scoring (Low to Critical). 14x growth since 2019. 3,782 unique assessors across 930 beaches.

🚢

Powercraft Ops 14.6K logs

Watercraft operation logging for IRBs and RWCs. 41K member entries, 90K comments. 328 entities. PDF/CSV exports.

👥

Member Management 602K members

Centralised data synced from SLSA API. 3.5M award links, 43K active patrol members. Qualification tracking and eligibility.

SLS Nano Solutions
B2 — Workflows

Patrol Lifecycle

The complete digital workflow for a beach patrol operation.

Rostered

Imported from
SLSA API

Sign-On

Beach status
Equipment
Attendance
Contact info

Active Ops

GPS tracking
Weather updates
Hazard/Rescue
Statistics

Sign-Off

Final stats
Photo of day
Completion

Synced

Data sent to
SLSA central



4 service types — SLS, Lifeguards, Support Ops, Units
37 patrol categories
Real-time via WebSockets
SLS Nano Solutions
B3 — Evolution

Module Evolution

How the platform grew from a single patrol roster to a full operations suite.

2017
🌊 Patrols 🅞 Weather 📍 GPS
2018
🚨 Incidents ⚠️ Risk Assessment ⚓ Gear & Equipment
2019
🚢 Powercraft Logs
2020–22
⚡ Webhooks 🔐 LIMSOC 💧 Water Safety
2023–24
🚀 API V2 Migration 🌟 v2.0.0 Nova 4 Pulse
2025–26
Legacy SOAP Removed E2E Testing Perf Optimisation
SLS Nano Solutions
C1 — History

Project Timeline

Key milestones from inception to today.

SEP 2017
Project Initialised v1.0.0
Laravel 5 + Vue 2 + Bootstrap 4. First patrol roster prototype.
SEP 2018
Weather & GPS v1.2.0
BeachSafe weather integration. GPS tracking for hazards, rescues, sharks.
SEP 2019
Gear & Assessments v1.4.0
Equipment management, inspections, powercraft logs, risk assessments (SRR).
JUN 2020
Incident Management v1.6.0
SurfGuard/IRD incident integration. SOAP API stabilisation.
MAR 2021
Laravel 8 v1.8.0
Framework upgrade. SoapClientNano for PHP 7.4 compatibility.
OCT 2022
Laravel 9 v1.11.0
Water safety assessments. LIMSOC integration.
SEP 2023
API V2 Begins v1.18.0
SLSA REST API V2 integration starts. Beginning of SOAP migration.
SEP 2024
Version 2.0.0 v2.0.0
Laravel 10. Full API V2. Unbranded app. Nova 4. Pulse monitoring. Major cleanup.
SEP 2025
Legacy Removed v2.10.0
Incidents & Gear fully on API V2. SOAP removed. PHP 8.2. Legacy cleanup.
JAN 2026
Performance Fix v2.13.0
Critical DB indexing and query optimisation after production incident.
SLS Nano Solutions
C2 — Technology

Technology Stack

A modern, production-grade stack built for reliability.

Backend

Laravel 10 PHP 8.2
Saloon v3 HTTP Client
Laravel Nova 4 Admin
Laravel Horizon Queues
Laravel Pulse Monitoring
Spatie Media Library
Spatie Activity Log
wkhtmltopdf PDF

Frontend

Vue 2.6 SPA
Vuex State
Vue Router
Bootstrap 4 UI
Axios HTTP
Chart.js
Google Maps API
FontAwesome

Infrastructure

MySQL Primary DB
Redis Cache/Queue
Google Cloud Storage
Pusher WebSocket
Docker
GitLab CI/CD
Bugsnag Errors
PHP Deployer
SLS Nano Solutions
C3 — Architecture

SOAP → REST V2 Migration

A 20-month architectural transformation from legacy SOAP to modern REST API.

Legacy SOAP (2015–2024)

SoapClientNano (custom PHP class)
WSDL endpoints — PatrolUtils, PatrolLogs, SurfcomStats
XML request/response parsing
Curl-based REST fallback
Pain points:
SOAP encoding bugs
Timeout instability
PHP 7.4 breaking changes

REST V2 API (2024–Present)

slsa-laravel-api package (Saloon v3)
OAuth2 Client Credentials — 119 min cached tokens
15 typed resource endpoints
DTOs for type-safe responses
Benefits:
Modern, reliable HTTP client
Structured request/response logging
Custom paginators for large datasets
SLS Nano Solutions
C4 — Core Package

The slsa-laravel-api Package

A purpose-built Laravel SDK replacing the legacy SOAP integration.

Why It Was Built

  • SOAP encoding bugs broke with every PHP upgrade
  • Timeout instability caused production outages
  • No type safety — unstructured arrays everywhere
  • No request/response logging for debugging
  • API logic scattered across service classes

What It Delivers

Built on Saloon PHP v3 with OAuth2 Client Credentials, 36 type-safe DTOs, automatic token caching (119 min), sensitive data masking in logs, and custom paginators for large datasets.
16
Services
97
Request Classes
36
DTOs
16
Resources
156
Commits
19
Releases
3
Paginators
190+
PHP Files
Architecture Pattern
Service → Resource → Request → DTO
SLS Nano Solutions
C4b — Package Releases

Package Release History

From first commit (Dec 2023) to production SDK powering all SLSA API communication.

v1.0.0
September 2024
Stable release aligned with Ops App v2.0.0. Fixed member loading and substitution handling. The foundation for all V2 API communication.
v0.1.0 → v0.2.7
Apr – Sep 2024
Rapid iteration: Patrol stats DTOs, carnival service, BeachSafe hazards, radio logs, rescue progressive updates, lifeguard sign-up.
v1.1.0
October 2024
Unit patrol sign-on — implemented correct request format for vehicle-based teams, completing all 4 patrol type workflows.
v1.1.2
October 2024
Pagination refactor with new MembersPaginator. Added positions to member requests enabling qualification checking at sign-on.
v1.1.4
October 2024
PHP-FPM compatibility fixes — OAuth token caching behaved differently under FPM vs CLI. Critical for production deployment.
v1.1.6
April 2025
SSO token authentication — added token-based verification as alternative to username/password for smoother mobile app auth.
v1.1.7
May 2025
Incidents & Gear endpoints — enabled full API V2 migration for Ops App v2.10.0. Laravel 11 prep. Disabled HTTP retries to prevent cascading timeouts.
v1.1.5
February 2025
Hazard ratings — added severity ratings to beach hazard endpoints for risk assessment integration.
v1.1.8
Unreleased
Entity asset pagination — handles large equipment inventories using new EntityAssetsPaginator for clubs with 500+ assets.
SLS Nano Solutions
C5 — Native App

Mobile App (OperationsCapacitor)

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.

Architecture

App Launch
  │
  └─ Capacitor Bridge (app.js)
      │ init GPS + Bugsnag + env URL
      │
      └─ laravel.js (Dynamic Loader)
          │ GET /api/v1/app
          │ download CSS + JS
          │ version check (content hash)
          │ poll every 5 min
          │
          └─ Vue 2 SPA (full web app)

Native Capabilities

📍
Background GPS Tracking
TransistorSoft plugin — tracks location even when app is closed. Core feature for patrol monitoring, hazard & rescue location.
🔔
Push Notifications
Real-time alerts for incidents and patrol changes via Pusher WebSocket.
📷
Camera & Media
Photo capture for patrol photos, hazard documentation, incident evidence.
🔌
Offline Support
Service worker caches assets for patchy beach connectivity.
v1.5.1
Version
699
Builds
211
Commits
SLS Nano Solutions
C6 — Integrations

External Systems

Connected to the SLSA ecosystem and third-party services.

🌎
SLSA API V2

Core data: patrols, members, assets, awards, incidents

🌊
BeachSafe

Real-time weather data for all beaches

🚨
SurfCom

Incident feed via webhooks

👤
SurfGuard

Member database, incident recording

🗺
Google Maps

Geocoding and location services

Pusher

Real-time WebSocket events

💾
Google Cloud

File and image storage

🐛
Bugsnag

Error tracking and alerting

SLS Nano Solutions
C7 — Infrastructure

Server Infrastructure Google Cloud Platform — Sydney

Application Server

HEALTHY
operations.sls.nano.rocks • australia-southeast1-a
Machinee2-standard-4 CPU4 vCPU (Xeon 2.2GHz) Memory16 GB (4.1 GB used) Disk117 GB (32% used) Uptime533 days OSUbuntu 20.04 LTS PHP8.2.28 (FPM, 7 workers) Nginx1.18.0 (HTTP/2, SSL) Redis5.0.7 (264 MB) SSLLet's Encrypt → May 2026
Domains: operations.sls.com.au • operations.lifeguards.com.au • bm.sls.com.au

Database Server

DISK 81%
operations-db.sls.com.au • australia-southeast1-b
Machinee2-standard-4 CPU4 vCPU (Xeon 2.2GHz) Memory16 GB (12 GB used — 77% MySQL) Disk146 GB (117 GB used, 81%) Uptime475 days MySQL8.0.42 Buffer Pool13 GB (83% of RAM) Max Conns600 (2 active) Queries193.9M total Slow Queries4.6M (2.4%)
Databases: operations_prod (15.1 GB) • bm_prod (350 MB)
Deployment
PHP Deployer (zero-downtime)
Logging
LogDNA (centralised)
Network
OpenVPN (SLSA)
Errors
Bugsnag
Production
operations.sls.com.au
GCP Sydney
Production
operations.lifeguards.com.au
Unbranded
Staging
operations.nano.rocks
Nano Freo Lab
QA
operations-qa.nano.rocks
API Testing
Prod Mirror
operations-prod.nano.rocks
Debugging
SLS Nano Solutions
D1 — Production Data

Platform Scale

Real numbers from the production database — March 2026.

602K
Members
62K
Patrols
3.4M
GPS Points
52K
Incidents
49K
Risk Assessments
55K
Assets Tracked
1,264
Organisations
348
Active Beaches
12.6 GB
Database
301/day
Peak Patrols
9.5K/day
API Calls
12.5M
Activity Logs
SLS Nano Solutions
D2 — Growth

Platform Growth & Seasonality

Monthly Patrol Volume (2025–2026 Season)

Sep2.4K
Oct8.1K
Nov8.0K
Dec9.6K
Jan12.0K
Feb7.4K
Mar7.3K
Apr5.5K
Peak: January 2026 — 12,024 patrols (~388/day)

User Engagement

43,424 unique members assigned to patrols
6,545 users logged in within the last year
1,227 active users in the last 30 days
9.9 average members per patrol

Risk Assessment Growth (14x in 6 years)

20191.2K
20200.5K
20211.2K
20223.3K
20237.7K
202411.4K
202516.9K

Incident Volume

20182.5K
20205.2K
20225.7K
20249.9K
20258.2K
20262.3K

Organisations

569
Lifeguards
413
SLS Clubs
205
Support Ops
SLS Nano Solutions
D3 — Leaderboards

Top Clubs & States

Top SLS Clubs by Patrols

1North Bondi SLSC7.4K
2Coogee SLSC6.2K
3Bondi Surf Bathers6.0K
4Manly LSC5.9K
5Maroubra SLSC5.3K
6Queenscliff SLSC5.3K
7Mooloolaba SLSC5.1K

Top Clubs by Incidents

1Bondi Surf Bathers LSC949 2Coogee SLSC865 3North Bondi SLSC558 4Manly LSC495 5Terrigal SLSC451

States Leaderboard

State Entities Patrols Members Beaches
NSW27721,68722,269133
QLD1697,0228,90957
VIC692,6484,00736
WA512,4184,79241
SA291,8212,52722
TAS2154679514
NT1134463

Top Clubs by Powercraft Logs

1Manly LSC561 2Shellharbour SLSC471 3Ocean Beach SLSC462 4Avalon Beach SLSC432 5Long Reef SLSC426
SLS Nano Solutions
D4 — Users

Most Active Users

Top Patrol Members

1Joshua Warne4,264
2Lachlan Larven3,337
3Sean Faulkner3,290
4Cal Silcock3,000
5Robert Tanner2,743

Top Assessment Creators

1James Crittenden445 2Michael Wasley435 3Mark Hills372 4Jacqueline McGregor372 5George Fatseas302

Top GPS Contributors

1Matthew Bell811K 2Barry Antella OAM720K 3Steven McDonald451K

Multi-Module Power Users

Users active across patrols, assessments, powercraft, and more.

Name Patrols Assess. PWC GPS Comments
Joshua Warne4,264208811068
Nathan Amos1,58023118373
Jai Gardner1,5702424411180
Yvette Rutherford1,05415271,13470
Michael Wilson109436713742
Warren Howard568312448480

Top Powercraft Loggers

1Jamie Cairns148 2Giles Stoddard134 3Arthur Bajada134 4Warren Howard124 5Richard Nurmi113
SLS Nano Solutions
E1 — Automation

Scheduled Tasks — 17 Cron Jobs

Automated data synchronisation keeping the Operations App in sync with SLSA central systems.

Daily Evening Sync (7pm–10pm)

19:10 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

Production Only

05:30 api:patrols — Import 60 days of patrol rosters 22:45 api:patrols-sign-off — Sync sign-off data

Hourly

9am–8pm api:patrols-stats — Submit patrol statistics to API 6am–6pm api:ird-incidents — Sync incidents from IRD

Weekly (Sunday)

20:40 update_awards — Update position award requirements 21:20 assign_qualified — Assign qualified positions to members

Maintenance

01:00 api:members:webhook — Webhook member reconciliation 02:00 logs:cleanup — Prune old API logs & positions every 5m horizon:snapshot — Queue monitoring snapshot
Why This Schedule?
Evening sync window (7–10pm) runs after beach operations end. Hourly stats sync during patrol hours (9am–8pm). Weekly qualification updates on Sundays when no patrols run. Production patrol imports at 5:30am before the day begins.
SLS Nano Solutions
E2 — Webhooks

Incoming Webhooks — 1.58M events

Webhook Types

Member Update
/webhook/member/update
1,574,203
~2,821/day
Real-time member data sync from SLSA central. Fires when member details change — name, contact, awards, status. Keeps 602K local member records current.
Patrol Update
/webhook/v2/patrol/update
7,170
~18/day
Real-time patrol roster changes from integrated systems. Fires when patrol schedules are modified externally. Triggers live UI refresh via Pusher WebSocket.

Volume by Year

2024604K
2025877K
2026100K

Monthly Volume (Current Season)

Mar 2516K
Apr 2524K
Jul 2552K
Aug 2593K
Sep 25154K
Oct 25151K
Nov 25138K
Dec 2566K
Jan 2652K
Feb 2633K
Peak: Sep 2025 (154K) — Start of patrol season, mass member updates

Activity by Day & Hour

Busiest Day
Monday
291K events
Peak Hours
8am–2pm
~140K/hr bucket
Quietest Day
Saturday (141K) — members are on the beach, not updating profiles
SLS Nano Solutions
E3 — API Health

API V2 Health Dashboard

Performance metrics from 287K+ logged API calls via the slsa-laravel-api package.

98.4%
Success
77.2%
200 OK
21.2%
201 Created
1.0%
404 Not Found
0.6%
4xx/5xx Errors

Top Performing (100% Success)

/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

Needs Attention

/sso/auth — 39% errors (failed logins)
/patrol-log/create — 19% errors, 3.8s (duplicates)
/sign-on-lifeguard — 13% errors
/sign-on-club — 12% errors

Slowest Endpoints

/radio-logs — 5.1s avg (max 333s!)
/patrols/roster — 4.2s avg
/oauth/auth — 4.1s avg
SLS Nano Solutions
F1 — Codebase

Codebase & Testing

Source Code

PHP (Application)24021.6K loc Vue Components14928.2K loc PHP Tests4010.6K loc JavaScript33 Blade Templates42 SCSS Stylesheets17 DB Migrations152 Config Files24
700+ files • 60K+ lines of code

PHP Classes

Nova Resources34
Controllers27
Commands26
Models25
Factories24
Services20
Policies16
Providers11
Form Requests10
Middleware9
Notifications7
Mail / Jobs / Events14

Testing

26
Feature Tests — Patrol, Gear, Risk, Search, Incidents, Tracker, Permissions, Login
3
Unit Tests
11
Dusk E2E
30
API Fixtures

Automation

17
Scheduled Tasks
Daily, hourly, weekly
70
API Routes
RESTful endpoints

Media Storage

40.5 GB
46,992 files on Google Cloud Storage
Photos: 38.1 GB
Assessments: 1.7 GB
Comments: 531 MB
SLS Nano Solutions
F2 — Releases

Key Releases

VersionDateHighlights
v1.0.0Dec 2017First production release — patrol roster and management
v1.4.0Sep 2019Gear management, inspections, powercraft logs
v1.5.0Nov 2019Risk assessments (SRR) introduced
v1.6.0Jun 2020Incident management from SurfGuard/IRD
v1.8.0Mar 2021Laravel 8 upgrade, SOAP fixes for PHP 7.4
v1.11.0Oct 2022Laravel 9, water safety assessments
v1.13.0Dec 2022LIMSOC risk assessment integration
v1.18.0Sep 2023API V2 integration begins
v2.0.0Sep 2024Laravel 10, SLSA API V2, Nova 4, Pulse, unbranded app
v2.10.0Sep 2025Full API V2 migration, legacy SOAP removed, PHP 8.2
v2.13.0Jan 2026Critical performance fix — DB indexing, query optimisation
SLS Nano Solutions
G1 — Team

Contributors

6,251 commits from 13 contributors over 8.5 years.

Petr Cervenka
2,753
Jacopo Sarti
1,364
Saulo
931
Jack
522
Kailum Bull
352
James McGlone
114
SLS Nano Solutions
G2 — Roadmap

Future Direction

Active development continues with major modernisation initiatives.

In Progress

Vue 3 + Quasar Migration

Complete frontend modernisation from Vue 2 + Bootstrap to Vue 3 + Quasar. Pinia state. Vite build. Targeting v3.0.0.

Planned

Laravel 11 → 12 Upgrade

Progressive framework upgrades with active branches for Laravel 11 and 12.

Active

E2E Testing Suite

Playwright E2E testing covering auth, dashboard, gear. Expanding across all critical workflows.

Challenge

API V2 Error Handling

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.

Challenge

Sign-On/Off Completion

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.

Challenge

User Feedback Loop

No structured feedback mechanism. Need in-app feedback, bug reporting, and satisfaction tracking.

Investigation

Real-Time Webhook Sync

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.

Surf Life Saving Australia

Thank You

The SLS Operations Platform continues to evolve, keeping Australian beaches safe through digital innovation.

v1.0.0 (Dec 2017) → v2.13.0 (Jan 2026)

6,251
Commits
97
Releases
8.5 yrs
Development
Built by Nano Solutions • March 2026
1 / 25