Skip to content

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?

  1. Instant & Snappy: Every keystroke, status toggle, and filter responds with zero network latency and no loading spinners.
  2. 100% Offline Capability: Complete functionality on flights, subways, or remote locations without internet connectivity.
  3. 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.
  4. 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.