The short version: Fair Lawn Apps collects the bare minimum needed to send you notifications. No names, no emails, no tracking cookies. You can delete everything at any time.

What this project is

Fair Lawn Apps is a community project that pulls publicly available information from fairlawn.org and other public sources, then presents it in a more accessible format. It covers the Community Center gym schedule, library programs, Memorial Pool hours, local alerts, Farmers Market status, and theater events.

This is not an official Borough of Fair Lawn project. It is independently maintained by a Fair Lawn resident.

What gets collected

Push notification subscriptions

When you enable notifications for any app, your browser generates a push subscription endpoint (a URL). This is stored on Cloudflare Workers KV so notifications can be delivered to your device.

  • The subscription endpoint is generated by your browser, not by Fair Lawn Apps
  • No name, email, phone number, or other personal identifier is collected
  • Your notification preferences (which alerts to receive, digest schedule, etc.) are stored alongside the subscription
  • Subscriptions persist until you unsubscribe or your browser endpoint expires

Anonymous passkeys (cross-device sync)

If you choose to sync your notification preferences across devices, an anonymous passkey is created using WebAuthn. This is entirely optional.

  • No username or email is required
  • The passkey credential is stored in your device's secure enclave (never sent to the server)
  • The server stores: an anonymous user ID, a session token, and a passkey credential ID
  • An anonymous account password is generated automatically and is never shown to you
  • This data is stored in a Cloudflare D1 database

Local storage on your device

Fair Lawn Apps stores some preferences directly on your device using your browser's localStorage. This data never leaves your device.

  • Push subscription endpoint reference
  • Notification preferences
  • Calendar provider preference
  • Alert watch list
  • PWA install banner state
  • No personally identifiable information is stored in localStorage

Analytics

Fair Lawn Apps uses Umami, a privacy-focused analytics tool.

  • No cookies are used for analytics
  • No personal data is collected
  • Only page views and basic events are recorded
  • No cross-site tracking
  • Umami is GDPR and CCPA compliant by design

Feedback submissions

If you send feedback through the feedback page, your message, category, and a hash of your IP address are stored for up to 90 days. If you include your email, it is stored alongside your message for follow-up only โ€” never shared or used for marketing.

Ephemeral data

Some features involve temporary data that expires automatically.

  • Alert watches: If you "watch" an active alert (like a water advisory), that watch record expires after 30 days
  • Session data: Login sessions for passkey sync expire per standard timeouts

How long data is kept

Different types of data stick around for different amounts of time. Here is a breakdown of everything stored server-side and when it goes away.

Data with automatic expiration

These are deleted automatically by Cloudflare after a set period โ€” no manual cleanup needed.

  • Feedback submissions โ€” deleted after 90 days
  • Alert watches (e.g., "notify me when this water advisory is lifted") โ€” deleted after 30 days
  • Cancelled-session tracking (gym session cancellations for the current week) โ€” deleted after 14 days
  • Feedback rate limits (prevents spam) โ€” deleted after 24 hours
  • Notification idempotency keys (prevents duplicate notifications) โ€” deleted after 2 hours
  • Occupancy reports (gym crowdedness) โ€” deleted after 2 hours
  • Occupancy rate limits (one report per person per 15 minutes) โ€” deleted after 15 minutes
  • Passkey challenge tokens (temporary auth handshake) โ€” deleted after 2 minutes
  • One-off reminders (e.g., "remind me before this session") โ€” deleted after the session ends
  • Library event reminders โ€” deleted after the event ends
  • Interest signals ("I'd go to this") โ€” deleted by end of day (plus a small buffer)

Data that persists until you remove it

These have no automatic expiration. They stay until you take action or the data becomes invalid.

  • Push subscriptions โ€” stored until you turn off notifications, or your browser's push endpoint expires (at which point the subscription is automatically cleaned up during the next notification send)
  • User index (links your passkey account to your subscriptions for cross-device sync) โ€” stored as long as your subscription or account exists

Auth database (D1)

If you set up cross-device sync, these records are stored in a Cloudflare D1 database:

  • Sessions โ€” expire after 1 year of inactivity (extended automatically each day you use the app)
  • Passkey credentials โ€” stored indefinitely, tied to your anonymous account
  • Anonymous user accounts โ€” no personal info (no real name or email); stored as long as the passkey exists
  • Verification tokens โ€” short-lived, used during passkey setup and then expired

None of these records contain personally identifiable information. User accounts are created with random IDs and placeholder values โ€” there is no real name, email, or password to protect.

Stale subscription cleanup

When a push notification fails because the browser endpoint no longer exists (HTTP 404 or 410), that subscription is deleted immediately. This handles the most common case โ€” someone clearing their browser data or uninstalling the app without explicitly unsubscribing.

A more thorough background cleanup (proactively finding and removing stale subscriptions that never receive a notification attempt) is planned but not yet implemented. For now, stale subscriptions are cleaned up only when a notification delivery is attempted.

What is NOT collected

  • Names, email addresses, or phone numbers
  • Location data
  • Browsing history
  • Cookies for tracking purposes
  • Data from other apps on your device
  • Data about children (this app is not directed at children)

Where data is stored

Server-side data is stored on Cloudflare infrastructure:

  • Workers KV: Push subscriptions and alert watches
  • D1 Database: Anonymous passkey accounts and sessions

No data is sold, shared with advertisers, or transferred to other third parties.

Data scraped from public sources

Fair Lawn Apps automatically reads publicly available information from fairlawn.org, the BCCLS library calendar, and similar public sources every 3 hours. No login credentials or private data is accessed. Only information that is already publicly visible on these websites is collected and reformatted.

Your rights

Under the New Jersey Data Privacy Act (effective January 15, 2025) and general best practice, you have the right to:

  • Access what data is associated with your subscription
  • Delete your data at any time
  • Opt out of any data collection (data is never sold, so the "opt out of sale" right is satisfied by default)

To exercise any of these rights:

  • To delete push subscriptions: Turn off notifications in any app, or visit Settings to manage all apps at once
  • To delete passkey data: The anonymous account can be deleted through the Settings page
  • To clear local data: Clear your browser's site data for fairlawn.paragbaxi.com
  • For any other requests: Send us feedback

Children's privacy (COPPA)

Fair Lawn Apps is a general-purpose community information tool for Fair Lawn residents. It is not directed at children under 13. No personal information is knowingly collected from children. Push notifications deliver general community information (schedules, alerts) and are not personalized to any individual.

Changes to this policy

If this privacy policy changes, the updated version will be posted here with a new "last updated" date. Since no email addresses are collected, there is no way to send update notices. Checking back periodically is recommended.

Last updated: March 16, 2026

See also: Terms of Service ยท Security Practices