Select your site — date and time fill automatically
Anyone can use Shoreline Watch — no training needed. What you observe in the next few minutes adds to the evidence base that protects these sites.
AUTO—
AUTO—
DETECTINGGetting location…
Please select a site before continuing.
Step 2 of 6
Wildlife right now
What you can see — no ID skills needed
🐦YesI can see birds
—NoNone visible
Not sure / Cannot see clearly
1–20
20–100
100–500
500+ — large flock
⚠️Yes
✅No
Please indicate whether birds are present.
Step 3 of 6
Human impact
Tap once = Present · Tap again = Significant · Tap again = None
Tap each item to cycle: None → Present → Significant
Vehicles & Access
🚗Vehicle tracks / 4WD—
🏍️Motorbikes / trail bikes—
People & Animals
🐕Dogs off-leash—
👥People near bird zone—
🔊Noise disturbance—
Infrastructure & Waste
🗑️Litter / debris—
🪧Signage damaged / missing—
🚧Fencing damaged—
Other Activities
🔥Fire pit / fire evidence—
⛺Camping / overnight use—
Step 4 of 6
Site conditions
Tap to select current status for each
Access to site
Wrack line / coastal vegetation
Water quality (if visible)
Beach / foreshore surface
Step 5 of 6 · Optional but valuable
Photos
Up to 3 photos — tap a slot to take or upload
Photos are the strongest evidence. A photo of tyre tracks, off-leash dogs, or damaged signage is worth more than a text description in a council submission.
📷Add photo
📷Add photo
📷Add photo
Step 6 of 6
About you
Optional — skip if you prefer to remain anonymous
Your observation is valuable whether or not you share your name. If you add your email, you'll be able to see your contributions on the Shoreline Watch dashboard.
By submitting, you agree that your observation data (excluding personal details) may be used for shorebird conservation and site management purposes. Data is managed by Conversations With Birds / For Shorebirds.
Conversations With Birds
const GATE_KEY = 'fsb_auth';
const isLoggedIn = localStorage.getItem(GATE_KEY) === '1' || sessionStorage.getItem(GATE_KEY) === '1';
const authBtn = document.getElementById('nav-auth-btn');
const pubNav = document.querySelector('.nav-public-links');
const stewNav = document.querySelector('.nav-steward-links');
const tier2 = document.getElementById('fsb-t2');
if (isLoggedIn) {
if (pubNav) pubNav.style.display = 'none';
var regBtn = document.querySelector('.nav-register-btn'); if(regBtn) regBtn.style.display='none';
if (stewNav) stewNav.style.display = '';
if (tier2) tier2.style.display = '';
if (authBtn) {
authBtn.textContent = 'Logout';
authBtn.href = '#';
authBtn.addEventListener('click', function(e) {
e.preventDefault();
sessionStorage.removeItem(GATE_KEY); localStorage.removeItem(GATE_KEY);
localStorage.removeItem('fsb_auth');
window.location.href = '/';
});
}
} else {
if (tier2) tier2.style.display = 'none';
}
// Fix: add ?from=currentPath to Steward Login button so login returns here
if (authBtn && !isLoggedIn) {
var _fromPath = window.location.pathname;
if (_fromPath && _fromPath !== '/' && !_fromPath.includes('password')) {
authBtn.href = '/password?from=' + encodeURIComponent(_fromPath);
}
}
// Active link
var curPath = window.location.pathname.replace(/\/+$/, '') || '/';
document.querySelectorAll('.nav-links a').forEach(function(a) {
var aPath = a.getAttribute('href') || '';
if (aPath && (curPath === aPath || (aPath !== '/' && curPath.startsWith(aPath)))) {
a.classList.add('active');
}
});
(function(){
var btn=document.getElementById('nav-hamburger');
if(!btn) return;
var overlay=document.createElement('div');
overlay.className='nav-overlay';
document.body.appendChild(overlay);
function getActiveNav(){
var all=document.querySelectorAll('.nav-links');
for(var i=0;i