Skip to main content

offline-sync-engine

Handles offline data synchronization with conflict resolution and progressive sync.

Datos de origen

Repositorio
Fadil369/Solutions
Última actividad en el origen
9 de abril de 2026 a las 00:36
Idioma detectado de SKILL.md
inglés
Estrellas
1
Forks
0

Opciones de instalación

De forma predeterminada está seleccionado el prompt que primero revisa el origen. Puedes cambiar a un comando directo o descargar una copia local.

Revisa los archivos de origen

Lee SKILL.md y los archivos complementarios que muestra SkillsMP antes de decidir si quieres instalarlo.

Mostrando SKILL.md

SKILL.md
Instrucciones de origen · Vista previa de solo lectura
name
Offline Sync Engine
version
1.0.0
description
Handles offline data synchronization with conflict resolution and progressive sync.
author
workspace
activated
false
# Offline Sync Engine ## Overview Manages offline data storage and synchronization when connectivity returns. ## Decision Framework ### When to use - App needs to work without internet - Data must sync across devices - Users edit data while offline ### When NOT to use - Real-time collaborative systems - Read-only data displays ## Trigger Phrases - "Work offline" - "Sync data when back online" - "Offline support" - "Cache data locally" ## Sync Patterns | Pattern | Conflict Strategy | Best For | |---------|-------------------|----------| | Last-write-wins | Timestamp comparison | Simple data | | Operational transform | Transform operations | Collaborative text | | CRDT | Merge all changes | Distributed systems | | Manual merge | User resolves | Critical data | ## Storage Layers ``` ┌─────────────────────────────────────┐ │ Application Layer │ ├─────────────────────────────────────┤ │ Sync Queue (pending changes) │ ├─────────────────────────────────────┤ │ Local Cache (IndexedDB/SQLite) │ ├─────────────────────────────────────┤ │ Conflict Resolution │ ├─────────────────────────────────────┤ │ Remote API │ └─────────────────────────────────────┘ ``` ## Implementation ### Sync Queue ```javascript class SyncQueue { constructor() { this.pending = []; this.failed = []; } add(change) { this.pending.push({ id: generateId(), operation: change.operation, data: change.data, timestamp: Date.now(), retries: 0 }); } async flush() { while (this.pending.length > 0) { const change = this.pending[0]; try { await this.sendToServer(change); this.pending.shift(); } catch (error) { change.retries++; if (change.retries >= 3) { this.failed.push(this.pending.shift()); } break; } } } } ``` ### Conflict Resolution ```javascript class ConflictResolver { resolve(local, remote, strategy = 'last-write-wins') { switch(strategy) { case 'last-write-wins': return local.updatedAt > remote.updatedAt ? local : remote; case 'merge': return this.deepMerge(local, remote); case 'manual': throw new ConflictError(local, remote); } } } ``` ## Escalation Chain 1. **Retry** - Immediate retry (3 attempts) 2. **Backoff** - Exponential backoff (1s, 2s, 4s, 8s) 3. **Queue** - Add to offline queue for later sync 4. **Notify** - Alert user of sync failure 5. **Manual** - User intervention required ## Error Classification | Error Type | Strategy | Recovery | |-----------|----------|----------| | Network timeout | Retry with backoff | Auto | | Conflict | Merge strategy | Auto/Manual | | Auth expired | Refresh token | Auto | | Data corruption | Rollback + alert | Manual |
Ver en GitHub