Skip to content

This is a frozen snapshot of the documentation at v0.3.0. See Latest for the current version.

N-Watch exists to help local communities coordinate fast, noisy, high-priority emergency alerts with minimal operational overhead.

Owned and maintained by RME Solutions Technology Australia.

Doc status: Latest (rolling). See Versions.

Product goals

  • Extremely simple onboarding and use under stress
  • Reliable alert fan-out (push notifications)
  • Minimal data storage (PII-minimising by default)
  • Secure, server-verified admin actions
  • Low maintenance architecture (managed services + Cloudflare edge)

Users & roles

  • Member (standard user):

    • Authenticates via @react-native-firebase/auth native SDK (Google Sign-In or Sign in with Apple) on mobile
    • Joins groups by invite code
    • Registers device push token (automatic on sign-in)
    • Triggers incident alerts for their group (single confirm button)
    • Stores address locally on-device (never sent in plain text)
    • Can delete their account and all associated data from the app
  • Manager:

    • Authenticates via Microsoft Entra ID (Cloudflare Zero Trust) on admin dashboard
    • Creates groups
    • Creates invite codes
    • Broadcasts messages
    • Pauses/bans members
  • Super admin:

    • All manager capabilities across all groups
    • Views all users, groups, licenses, payments
    • Sets user roles (standard/manager/super_admin)
    • Grants and revokes licenses

Principles

Data minimisation

  • Do not store home addresses.
  • Avoid storing exact coordinates where possible.
  • Prefer coarse location buckets (e.g. a zone id / geohash bucket) over exact latitude/longitude.
  • Address is stored on-device only, and transmitted only as an encrypted payload when an alert is triggered.

Security-first permissions

  • Every privileged action is verified server-side.
  • Client UI is not trusted for authorization decisions.

Operational simplicity

  • Push fan-out and authorization logic lives in the Cloudflare Worker API.
  • Mobile uses @react-native-firebase/auth native SDK — initializes via platform config files, no JS-level initialization.
  • Firebase provides Firestore + FCM primitives for mobile.
  • Cloudflare Zero Trust + Microsoft Entra ID manage admin access (no custom login/password system).
  • Mobile app is deliberately minimal: sign in → join group → alert button.

Non-goals (by design)

  • Continuous location tracking
  • Storing exact addresses
  • Social features, feeds, or "engagement" loops
  • Medical advice, emergency triage, or replacing emergency services

Glossary

  • Group: a neighbourhood safety group with a coarse zoneId.
  • Invite code: short code used to join a group.
  • Incident: an emergency event triggered by a member.

Neighbourhood Emergency Alert System