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)
How sync works
No spinners, no lock-in. A write is local-instant, then quietly reconciled everywhere you work.
- 1
Write hits local SQLite
Your change is committed to the on-device database instantly — no network round trip, no spinner.
- 2
Marked pending
A per-row synced flag is cleared, queuing the change for the next background pass.
- 3
Background sync every 10s
Pending rows push to Supabase in FK-safe order: workspaces → lists → tasks → subtasks → focus sessions.
- 4
Real-time subscriptions merge
Changes from your other devices stream in over live subscriptions and reconcile against local state.
- 5
Last-write-wins
Conflicts resolve with a deterministic upsert, so every device converges on the same truth.
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.
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.