Features How It Works AI Coach Compare Support Download App

Interactive Architecture Diagram

Click any node to explore connections and details. ConvoAct uses MVVM with clean separation across four layers β€” 37 services, 9 repositories, and 82 SwiftUI files.

πŸ‘οΈ Views SwiftUI Β· 82 files
PlanView

Calendar week view, AI Smart Creator, task list with energy costs. 1,018 accessibility annotations across all views.

FocusView

Focus sessions (Pomodoro/Deep/Freeform), Brain Rot Blocker, 8 Quick ADHD Tools, Body Doubling, Brain Health Score.

WellnessView

Mood check-in, energy forecast, medication tracker, sleep routine, hydration, nutrition, movement, habits.

AIHubView

Claude AI chat with 4 personalities Γ— 4 tones Γ— 3 verbosity levels = 48 unique configurations.

SettingsView

E2E encryption toggle, Gentle Mode, Siri Shortcuts, widgets, biometric lock, notification preferences.

πŸ”„ ViewModels @MainActor Β· @Published
TaskViewModel

CRUD operations with online/offline fallback. Auto-encrypts via EncryptionService. Indexes tasks in Spotlight. 40 fields per task including energy cost and shared_with.

FocusViewModel

Manages Pomodoro, Deep Focus, Short/Long Break modes. Triggers AppBlockingManager shields. Logs HealthKit workouts on completion. Streak tracking.

WellnessViewModel

Aggregates 40+ HealthKit metrics. Computes energy forecast from sleep, HRV, mood data. Feeds BurnoutDetector 9-factor scoring.

ChatViewModel

Manages Claude conversations. Fetches last 20 messages for context. Extracts commitments via regex. Supports ephemeral and persistent conversations.

MedicationViewModel

Puzzle-verified confirmation, skip tracking, multiple daily times. Logs to HealthKit. 5-minute cache TTL for time-sensitive data.

HabitViewModel

Daily/weekly habit tracking with streak calculation. Custom frequency, category, reminders. Visual feedback and Siri donation on completion.

βš™οΈ Services & Repositories 37 services Β· 9 repos
TaskRepository

Full CRUD with online/offline fallback. Auto-decrypts fetched tasks. Indexes in Spotlight. Caches locally via OfflineStore. Queues changes via SyncEngine when offline. 40 fields per task.

FocusSessionRepository

Focus session CRUD β€” fetchToday, fetchWeek, create, update, markCompleted. Modes: focus, pomodoro, short_break, long_break, freeform. Offline fallback with date-based filtering.

MoodCheckinRepository

Stores mood valence (-1 to +1), labels, context, associations. Encrypted context field. Supports 7/14/30 day trend queries.

BurnoutDetector

9-factor weighted burnout score (0–100). Factors: Task Overload (20%), Sleep Quality (15%), Mood Trend (15%), Focus Capacity (15%), Physical Signals (10%), Caffeine (5%), App Usage (10%), Biological (10%). Risk levels: 🟒 Low, 🟑 Moderate, 🟠 High, πŸ”΄ Critical.

OnDeviceAIService

Apple Foundation Models (iOS 26+). 24 methods: parseTaskFromText, generateMoodInsight, generateSessionSummary, generateWellnessBriefing, generateJournalPrompt + streaming + structured variants. @Generable output types. Graceful degradation on older iOS.

HealthKitManager

40+ metrics: steps, active energy, exercise mins, sleep (deep/REM/core), HR, HRV, SpO2, respiratory, Vo2Max, water, dietary energy, protein, carbs, alcohol, caffeine, daylight, audio exposure, State of Mind, menstrual cycle, blood glucose, mindful minutes. 60s refresh throttle.

ChatService

Calls claude-chat edge function. Claude claude-sonnet-4-20250514 model. Parameters: message, conversationId, personality, tone, verbosity, ephemeral. Rate limit: 60 req/hour. 6-key fallback JSON parsing.

AppBlockingManager

Screen Time API: FamilyControls (.individual auth) + ManagedSettingsStore. System-level app/category shielding during focus. ConvoActShield extension logs block attempts to shared UserDefaults.

NotificationManager

Local + Push notifications. Local: mood/focus/habit reminders, medication alarms, quiet hours. Push: morning briefing, coaching nudges, deadline warnings, re-engagement, weekly summary, wellness trends, shared goals. APNs via edge function.

ScreenTimeManager

Tracks in-app usage: minutes today, sessions today, last session ago. 7-day rolling history in UserDefaults. ADHD tips: context-switching detection, checking loops, screen break reminders.

πŸ’Ύ Infrastructure Offline-first Β· Encrypted
Supabase Backend

PostgreSQL with Row-Level Security. 20+ tables. 11 Edge Functions for AI, push, sharing. Realtime V2 (6 channels). JWT auth with 1-hour expiry. RLS ensures users only access own data.

SyncEngine

Offline mutation replay. Max 500-item queue. PendingChange: entityType, action (create/update/delete/toggle_complete/upsert/deactivate), payload, retryCount. Deduplication: removes older changes for same entity+action. Delete-after-create optimization. Exponential backoff retry.

OfflineStore

File-based JSON cache in Documents/OfflineCache/. In-memory + disk with completeFileProtection. 12 entity types. Default TTL: 15min, Medications: 5min. Methods: save, load, delete, softDelete, restore, purge for each entity.

EncryptionService

AES-256-GCM via CryptoKit. 256-bit SymmetricKey in Keychain (com.convoact.encryption). Field-level encryption: title_encrypted, description_encrypted, etc. Key rotation with versioning. Export/import via Base64 for backup.

NetworkMonitor

NWPathMonitor tracks Wi-Fi/cellular connectivity. @MainActor singleton with NSLock for thread-safe isOnline. Auto-triggers SyncEngine.syncPendingChanges() on reconnect.

RealtimeService

Supabase Realtime V2. 6 channels: messages, tasks, session_invites, medications, habits, shared_goals. Callbacks for InsertAction, UpdateAction, DeleteAction. Multi-client collaboration.

Data Flow

See how data moves through the system in different scenarios.

πŸ‘€
User ActionTap "Add Task" in PlanView
πŸ“
TaskViewModelCreates ConvoTask with UUID
πŸ”
EncryptAES-256-GCM field-level
πŸ—ƒοΈ
TaskRepositoryWrite to Supabase + cache
⚑
SupabasePostgreSQL + RLS + Realtime
βœ…
SyncedSpotlight indexed + cached
πŸ“‘
No NetworkNetworkMonitor.isOnline = false
πŸ“¦
Save to OfflineStoreJSON file in Documents/OfflineCache/
πŸ”
Enqueue to SyncEnginePendingChange: entity, action, payload (max 500)
πŸ“‘
Network RestoredNetworkMonitor triggers auto-sync
πŸ”
SyncEngine ReplayDedup β†’ Retry with backoff β†’ Write to Supabase
βœ…
All SyncedQueue cleared, cache updated
πŸ“„
Plaintext Datatitle, description, dueAt
πŸ”‘
Keychain KeySymmetricKey(size: .bits256)
πŸ”
AES.GCM.seal()nonce + ciphertext + auth tag
πŸ’Ύ
Supabase DBtitle_encrypted, desc_encrypted
☁️
Zero-KnowledgeServer can't read your data
πŸ’¬
User Message"I can't start my project"
🎭
Context AssemblyPersonality + tone + verbosity + last 20 messages + tasks + mood + energy
⚑
Edge Function: claude-chatClaude claude-sonnet-4-20250514 Β· 60 req/hour rate limit
βœ…
Commitment ExtractionRegex finds actionable items β†’ auto-create tasks
πŸ€–
ADHD-Aware ResponsePersonalized advice with task breakdown

Tech Stack

UI Layer
SwiftUI82 files / 1,018 a11y
Declarative UI with MVVM. 82 files, 1,018 accessibility annotations.
Backend
Supabase20+ tables / 11 functions
PostgreSQL + RLS + Realtime V2 + 11 Edge Functions. 20+ tables.
Offline-First500-item queue / 12 entities
SyncEngine: 500-item queue, dedup, exponential backoff. OfflineStore: 12 entities, TTL cache.
AI & Intelligence
Claude AI4 personalities / context-aware
Claude claude-sonnet-4-20250514 via edge function. 4 personalities, context-aware, commitment extraction.
Foundation Models24 methods / on-device
On-device LLM (iOS 26+). 24 methods, @Generable structs, streaming.
Platform & Security
HealthKit40+ metrics / 6 categories
40+ health metrics. Activity, heart, sleep, nutrition, wellness, menstrual.
CryptoKitAES-256-GCM / field-level
AES-256-GCM. 256-bit Keychain key, field-level encryption, key rotation.
Screen Time APIFamilyControls / app blocking
FamilyControls (.individual) + ManagedSettings for system-level app blocking.

Siri Shortcuts & App Intents

21 intents enabling voice control and Apple Intelligence routing. IntentDonationManager teaches Siri your habits.

"Hey Siri, |"

Supabase Edge Functions

AI Social Notifications Device