Project 20 of ~34

🧟 Dead Platform Rescue — Architecture

Proactive data backup service across 50+ platforms. SvelteKit + Deno + Supabase + Ollama (Mac Mini) + platform-specific connectors.

🛠️ Tech Stack

ComponentTechnologyWhy
FrontendSvelteKitDashboard showing all connected platforms, backup status, archive viewer
BackendDeno 2Export orchestrator, health monitor, scheduler
DatabaseSupabase (PostgreSQL)Users, connections, backup schedules, health signals
AIOllama (Mac Mini)Analyze platform health signals, generate closure predictions
SchedulingQStashScheduled exports (daily/weekly/monthly), health check pings
StorageUser's own cloud or Supabase StorageBacked-up data lives in user's Google Drive/Dropbox or our storage

🔌 Platform Connector Architecture

Platform Abstraction Layer
Each platform has a connector that implements: OAuth flow, data type extraction, rate limit handling, and format normalization. New platforms added as connector modules. Currently supports: Twitter/X, Instagram, Facebook, LinkedIn, TikTok, YouTube, Pinterest, Reddit, WordPress, Medium, Tumblr, Flickr, 500px, Evernote, Notion, Google Drive, Dropbox, OneDrive.
Health Signal Monitor
Background job runs every 6 hours: check Alexa rank, social mentions, news API for acquisition/closure keywords, employee LinkedIn changes. Ollama synthesizes signals into health score per platform.
Incremental Export Engine
Track last-export cursor per platform. Each export run: query only new content since cursor, structure into normalized format, append to archive. Never re-export unchanged data.
Emergency Export Mode
Priority queue when platform confirmed dying. Bypasses normal schedule. Prioritizes: recent posts (last 90 days), most-engaged content, content with no prior backup. Parallel export from multiple platform APIs to beat shutdown deadline.

🗄️ Data Model

connections
iduuid
user_iduuid (FK)
platformenumtwitter, instagram, etc.
oauth_token_encryptedtextEncrypted OAuth token
backup_frequencyenumdaily, weekly, monthly
last_export_attimestamp
last_export_cursortextPlatform-specific cursor
health_scoreinteger0-100
is_activeboolean
archives
iduuid
connection_iduuid (FK)
content_typevarchar(50)posts, photos, videos, etc.
storage_urlvarchar(500)Where backed up
platform_idvarchar(255)Original platform ID
archived_attimestamp
metadata_jsonjsonbLikes, comments, engagement

Requirements  |  All Projects  |  Presentation →