Security & Privacy

Your data lives on your machine first.

Quoril is offline-first. Everything you create is written to a local SQLite database the moment you make it, then synced over an encrypted, authenticated connection. Private by default — and yours to keep.

Offline-first by design

Every task, list and focus session lives in a local SQLite database on your machine. Quoril works fully offline — and you own your data, always.

  • Local quoril_v2.sqlite store
  • Works with no connection
  • You own your data

Encrypted, authenticated access

Sync runs over authenticated Supabase sessions with Row-Level Security, so a row is only ever readable by the account that owns it.

  • Supabase auth + OAuth
  • Row-Level Security policies
  • Per-account isolation

Resilient & recoverable

Timer state is persisted every second, crashes are recovered on next launch, and deletes are soft so nothing vanishes by accident.

  • Per-second backup
  • Crash recovery
  • Soft delete (deleted_at)
Under the hood

How sync works

No spinners, no lock-in. A write is local-instant, then quietly reconciled everywhere you work.

  1. 1

    Write hits local SQLite

    Your change is committed to the on-device database instantly — no network round trip, no spinner.

  2. 2

    Marked pending

    A per-row synced flag is cleared, queuing the change for the next background pass.

  3. 3

    Background sync every 10s

    Pending rows push to Supabase in FK-safe order: workspaces → lists → tasks → subtasks → focus sessions.

  4. 4

    Real-time subscriptions merge

    Changes from your other devices stream in over live subscriptions and reconcile against local state.

  5. 5

    Last-write-wins

    Conflicts resolve with a deterministic upsert, so every device converges on the same truth.

Auth & sessions

Hardened sign-in, end to end

Every layer — from password rules to session lifetime — is tuned to keep accounts locked down without getting in your way.

Email + password

Classic sign-in with verified credentials.

Google OAuth

One-tap sign-in via a quoril:// deep-link callback.

Email verification

Addresses are confirmed before access is granted.

Strong password rules

12+ characters with mixed case, a number and a special character.

Auto token refresh

Tokens renew 5 minutes before expiry — no surprise logouts.

Inactivity timeout

Sessions end automatically after 30 minutes idle.

Maximum session length

Every session is capped at 12 hours before re-auth.

Browser fingerprinting

Session validity is bound to a device fingerprint.

Rate limiting

5 login attempts per minute, then a 15-minute lockout.

Row-Level Security

Database policies enforce per-account data access.

Single-instance lock

Only one app instance runs, keeping deep links safe.

Data ownership

Your productivity data is yours. It stays local-first on your device, syncs only to your own account, and is never sold, rented, or mined. No tracking pipelines, no data brokers — just your work, where you left it.

Productivity you can trust.

Offline-first, encrypted, and built so your data never leaves your hands. Be first in line.