Security for Irish pest control companies

Encryption, access control, and audit trails

Your data and your customers’ data are protected with encryption in transit and at rest, role-based access, password-protected PDFs where needed, Firestore and Storage rules, App Check, and server-side validation. Each organisation receives a dedicated Firestore database and Storage bucket for complete tenant isolation. We do not store passwords; authentication is handled by Firebase, supporting GDPR and Irish data protection expectations.

Encryption & data protection

Data is encrypted in transit (TLS/HTTPS) and at rest. Firebase and Google Cloud use industry-standard encryption for Firestore, Storage, and all services. Only authorised users can access customer and job data; roles control what each user can see and do.

  • Encryption in transit and at rest
  • Role-based access to customer and operational data
  • Audit logging for key actions where applicable

Tenant isolation & dedicated infrastructure

Each company added to the platform receives its own Firebase project, including a dedicated Firestore database and Firebase Storage bucket. Your operational data, documents, and reporting remain logically and physically isolated from other tenants. This architecture supports compliance requirements, simplifies audit trails, and ensures that access control and security rules apply only to your organisation’s resources.

  • Each company receives its own Firestore database and Storage bucket
  • Complete data isolation between tenants; no shared data stores
  • Supports compliance and simplifies audit trails

Password-protected PDFs

Sensitive PDFs can be protected with an owner password. In the Android app, Create Report offers an optional "Password protect PDF" checkbox; when enabled, you set an owner password and the PDF is encrypted. Viewing and printing are allowed; editing requires the password.

Action Form PDFs support the same optional password protection. When enabled, a dialog prompts for an owner password (required to edit the PDF). All generated PDFs (Action Forms and Create Report) use full compression and, when protection is enabled, encryption via iText.

  • Create Report: optional owner password, view/print allowed, edit restricted
  • Action Forms: optional password, technician/customer signatures, image attachments
  • Encryption and compression for all generated PDFs

Firebase Authentication

We do not store passwords. The Android app uses Firebase Authentication with email/password sign-in; the CRM uses Google OAuth via Firebase Auth. User identity and session are managed by Firebase; role is resolved from the Firestore staff collection (CRM) or user records (Android).

Offline login on the Android app is a local-only mode with no Firebase credentials; when logged in with Firebase, templates and API features are scoped to the authenticated user.

  • Android: email/password sign-in via Firebase Auth
  • CRM: Google OAuth via Firebase Auth
  • Role from Firestore staff/user data; no password storage by the app

Firestore Security Rules

All access to Firestore is enforced by Security Rules. Rules implement role-based read/write, technician data scoping (e.g. techs only see their own contracts, jobs, and calendar), and calendar isolation. Lead editing and report deletion are restricted by role; token protection applies to shared accounts.

On the marketing site, preview/demo signup uses a create-only collection: no read, update, or delete from the client; schema and types are validated in rules. Other collections are only readable/writable when request.auth is set and token claims match the resource where applicable.

  • Role-based read/write and technician scoping
  • Calendar and contract isolation per technician
  • Lead and report deletion restrictions; token protection for shared accounts
  • Create-only and schema validation for public-facing signup

Firebase Storage & documents

Reports and documents are stored in Firebase Storage with access controlled by Storage rules and application logic. Upload and rename permissions are role-based; super-admin-only deletion applies to protected reports. Folder-based organisation and metadata (where used) support secure browsing and audit.

  • Secure document storage in Firebase Storage
  • Role-based upload, rename, and delete
  • Super-admin-only deletion for protected reports

App Check & callable functions

Firebase App Check is used to reduce unauthorised API access: reCAPTCHA v3 on the web and Play Integrity or SafetyNet on Android. All sensitive or write operations from the marketing site go through callable Cloud Functions; there are no direct client writes to sensitive collections.

Every callable validates payload (schema, length, honeypot). Server-side validation ensures we never trust client input.

  • App Check: reCAPTCHA v3 (web), Play Integrity/SafetyNet (Android)
  • Callables for all sensitive writes; no direct client writes to sensitive data
  • Server-side validation and schema checks on every callable

Secure app distribution

The Android app is distributed via Firebase App Distribution. Builds are delivered securely to your technicians and testers without publishing to the public Play Store. Access is controlled through the Firebase console: you manage who receives which release or pre-release build, track installs, and keep distribution within your organisation.

  • Distributed via Firebase App Distribution
  • Controlled delivery; no public store exposure
  • Access and releases managed from Firebase

Role-based access control

The CRM enforces super_admin, admin, and tech roles via Firebase Auth and Firestore rules. The Android app uses user IDs (e.g. 001, 002, 003, 004) for permission checks. Admins can assign work and manage all calendars and jobs; technicians see only their own schedule, contracts, jobs, and commission. Client-side route guards, Firestore rules, and Cloud Function validation all enforce the same model.

  • CRM: super_admin, admin, tech with distinct capabilities
  • Android: user-ID-based permissions; admins vs technicians
  • Route guards, Firestore rules, and Cloud Function validation

Rate limiting & abuse prevention

Demo and signup endpoints are rate limited per IP and per email (e.g. per hour) to prevent abuse. Counters are stored in Firestore or in-memory with fallback; functions reject requests when limits are exceeded. Gmail API usage in the CRM is subject to server-side rate limiting.

  • Per-IP and per-email rate limits on signup/demo
  • Server-side rate limiting on email sending

Security headers & hosting

Firebase Hosting is configured with security headers: X-Content-Type-Options, X-Frame-Options, Referrer-Policy, Permissions-Policy. Content Security Policy (CSP) is added where it does not break the site. These headers help prevent clickjacking, MIME sniffing, and other common web attacks.

  • X-Content-Type-Options, X-Frame-Options, Referrer-Policy, Permissions-Policy
  • CSP where applicable

Secrets & token handling

No production secrets are committed to the repository. Environment variables and Firebase config are used for API keys and configuration. In the CRM, token storage for shared accounts (e.g. email) is restricted to super_admin. AI API keys (e.g. for the Android app) are stored in Firestore and only user 001 can update them via Settings.

  • No production secrets in git; environment variables and Firebase config
  • Token storage restricted to super_admin where applicable
  • API keys in Firestore with admin-only write

Compliance & your part

The platform is suitable for commercial pest control, service maintenance, and regulated reporting environments. We follow security best practices and can support compliance reviews. Use strong passwords and do not share accounts; report any suspicious activity to your administrator.

  • Encryption, access control, and audit practices
  • Strong passwords and no account sharing
  • Report suspicious activity to your administrator