Web AppLive

Taskify

PWA Task Manager with Real-time Sync

View Live Site View on GitHub
Taskify PWA task manager showing project board with drag-and-drop tasks, priority labels, and completion tracking

Role

Frontend Engineer

Category

Web App

Status

Live

Outcome

PWA with offline support, real-time sync, and full authentication flow

Tech Stack

ReactTypeScriptSupabaseTailwind CSS

Overview

Taskify is a progressive web app for personal task and project management. It features full Supabase authentication, real-time cross-device sync, offline functionality, and a clean board-based interface.

The Problem

Personal task managers are either too simple (no sync) or too complex (team overhead). Taskify hits the middle ground: a fast, offline-capable app with real sync that works on any device without an app store.

Process

The offline-first architecture uses a local state cache that syncs to Supabase when connectivity is restored. Service workers handle asset caching and background sync.

Technical Deep-Dive

The PWA manifest and service worker are configured to cache all static assets on install, giving the app a near-instant first load on repeat visits. The background sync queue persists task mutations in IndexedDB and flushes them when the network reconnects.

Code Sample

Offline-first task mutation with background sync

typescript
// lib/offline-queue.ts
const QUEUE_KEY = 'taskify_sync_queue';

export async function queueMutation(mutation: TaskMutation): Promise<void> {
  const queue = await getQueue();
  queue.push({ ...mutation, timestamp: Date.now(), id: crypto.randomUUID() });
  await setQueue(queue);
  
  if (navigator.onLine) {
    await flushQueue();
  }
}

export async function flushQueue(): Promise<void> {
  const queue = await getQueue();
  const failed: TaskMutation[] = [];
  
  for (const mutation of queue) {
    try {
      await applyMutation(mutation);
    } catch {
      failed.push(mutation);
    }
  }
  
  await setQueue(failed);
}

Results

A fully installable PWA with Lighthouse PWA score of 100. Works offline, syncs in real-time, and handles the authentication edge cases (token refresh, session expiry) that most demos ignore.