Private
Public Access
1
0

Implement Phase 6: automated bank sync (Plaid + SimpleFIN) & settings

Add automated transaction syncing via Plaid and SimpleFIN providers,
a Settings page for managing connections and account mappings,
background scheduled syncing, and sync history logging.

New backend: BankSync plugin project with PlaidSyncProvider and
SimpleFinSyncProvider, SyncConnection/LinkedAccount/SyncLog models,
AES-256 encryption service, BankSyncService orchestration,
BankSyncBackgroundService (15-min tick), and BankSyncController
(13 endpoints). EF migration creates sync_connections,
linked_accounts, and sync_logs tables.

New frontend: Settings view with 3 tabs (Profile, Bank Connections,
Sync History), bankSync API service, BankSyncComplete SignalR
notifications, and Settings nav item in sidebar + avatar dropdown.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Catherine Renelle
2026-02-08 15:08:23 -05:00
parent eb49147080
commit 3e0446c9be
34 changed files with 3956 additions and 8 deletions
+11 -1
View File
@@ -1,7 +1,7 @@
import { ref, computed } from 'vue'
import { HubConnectionBuilder, HubConnection, LogLevel } from '@microsoft/signalr'
import { useAuthStore } from '@/stores/auth'
import type { AppNotification, FileImportNotification } from '@/types'
import type { AppNotification, FileImportNotification, BankSyncNotification } from '@/types'
const notifications = ref<AppNotification[]>([])
const isConnected = ref(false)
@@ -32,6 +32,16 @@ function connect() {
})
})
connection.on('BankSyncComplete', (data: BankSyncNotification) => {
notifications.value.unshift({
id: crypto.randomUUID(),
type: 'BankSyncComplete',
data,
timestamp: new Date().toISOString(),
read: false
})
})
connection.onclose(() => {
isConnected.value = false
})