Local-First Architecture
Tasquera is built on a strict local-first architecture. Your data is created, indexed, updated, and stored directly on your physical hardware, never on remote cloud databases.
Why Local-First?
- Instant & Snappy: Every keystroke, status toggle, and filter responds with zero network latency and no loading spinners.
- 100% Offline Capability: Complete functionality on flights, subways, or remote locations without internet connectivity.
- Data Ownership & Longevity: Your workspace lives in transparent, open standard JSON on your device. Even if Tasquera’s domain or servers were to disappear, your local application and data remain fully operational forever.
- Complete Privacy: No third-party data tracking, advertising SDKs, or remote storage vulnerabilities.
Storage Subsystems
Web & Progressive Web App (PWA)
- IndexedDB: Asynchronous high-performance storage using dedicated object stores for persistent dataset caching and directory handle permissions.
- LocalStorage: Synchronous fallback for rapid client bootstrap and delivered notification tracking (
tasquera.notified.v1). - File System Access API: Binds directly to user-selected local folders for bidirectional file syncing.
Android Native App
- Sandboxed Internal Storage: Isolated local app storage protected by Android OS security sandboxes.
- Device Documents (
Documents/Tsqsync/): Direct file storage for local-first peer-to-peer folder sync tools (such as Syncthing).
Data Schema (Payload Version 2)
Tasquera structures data in clean, normalized JSON objects:
1. Task (Task)
interface Task { id: string title: string done: boolean status?: 'todo' | 'in_progress' | 'done' createdAt: number updatedAt?: number completedAt: number | null listId: string | null dueDate: string | null description?: string priority?: 'low' | 'medium' | 'high' | 'urgent' subtasks?: { id: string; title: string; done: boolean }[] links?: { id: string; url: string; title?: string }[] recurrence?: { rule: 'daily' | 'weekdays' | 'weekly' | 'monthly' | 'yearly' interval?: number daysOfWeek?: number[] } | null}2. Collection (Collection)
interface Collection { id: string name: string kind?: 'list' | 'board' defaultView?: 'list' | 'board' favorite?: boolean createdAt: number updatedAt?: number}3. Tombstone Deletion Markers (Tombstone)
interface Tombstone { id: string kind: 'task' | 'collection' deletedAt: number}Tombstones track deleted records so peer-to-peer sync merges do not accidentally resurrect deleted tasks from another device.
4. Application Settings (AppSettings)
Controls interface theme (Dark / Light), desktop task modal layout (drawer / centered), week starting day (Monday / Sunday), completion chime, default task priority, and reminder time.