Log Feed
Audit Log Feed
9:41
Audit Log
Live
2,847
Events Today
+12% vs yesterday
14
Critical Events
+3 from yesterday
All 2,847
Auth 412
Data 1,203
Payment 389
Admin 843
Recent EventsFilter
DM
Danny M. Admin
Approved contractor verification for Ohio Roofing Co
2 min ago
SY
System Automated
Escrow released for Job #4821 — $3,200 to contractor
8 min ago
JR
James R. Contractor
Failed login attempt from 192.168.4.22 — invalid password
14 min ago
SL
Sarah L. Poster
Updated property address for 123 Oak St, Akron
21 min ago
SY
System Critical
Rate limit exceeded — 500+ requests from 45.33.12.87 in 60s
34 min ago
DM
Danny M. Admin
Updated platform fee from 8.5% to 8.0% in settings
47 min ago
AuditLogFeed component. useQuery(api.admin.auditLogs.list) with real-time subscription, severity filter chips
Event Detail
9:41
Event Detail
Settings Updated
Platform fee changed by admin
Event Metadata
Timestamp
Feb 24, 2026 · 8:54:13 AM EST
Actor
DM
Danny M. Admin
Action
settings.platformFee.update
Severity
Warning
IP Address
73.148.92.41
User Agent
Mozilla/5.0 (Macintosh; Intel Mac OS X)
Session ID
sess_2nK8fQ...
Data Changes
Before / After
  settings.financial {
-   platformFeePercent: 8.5
+   platformFeePercent: 8.0
    payoutSplit: [40, 60]
  }
AuditEventDetail component. useQuery(api.admin.auditLogs.getById) with diff rendering and session correlation
Filtering
Advanced Filters
9:41
Advanced Filters
Reset
Date Range
From
Feb 17, 2026
To
Feb 24, 2026
Actor Type
Poster
Contractor
Admin
System
Action Category4 selected
Authentication
412
Data Modification
1,203
Payment Operations
389
Admin Actions
843
API Access
2,104
File Operations
67
Entity Type
Jobs
Bids
Users
Escrow
Contracts
Settings
Severity Level
Info
Warning
Critical
Text Search
platformFee|escrow.*release
.*
Regex enabled
Apply Filters (1,592 results)
AuditFilterSheet component. Bottom sheet with multi-select, date range, regex toggle. Stores filter state locally
Security
Security Events
9:41
Security Events
7
Failed Logins
Last hour
3
IP Anomalies
Under review
23
Password Resets
Normal rate
2
Rate Limit Hits
Flagged
Suspicious Activity Detected
Brute force pattern from 45.33.12.87 — auto-blocked 15m ago
Critical EventsView All
5 Failed Login Attempts Critical
Account james.r@ohioroofing.com locked after 5 consecutive failures from IP 192.168.4.22
Unusual IP Location Warning
Admin login from Frankfurt, DE — previous sessions all from Ohio, US
Rate Limit Exceeded Critical
500+ API requests in 60s from 45.33.12.87 — potential scraping or DDoS attempt
Password Reset Spike Info
8 password resets in last hour from same subnet — legitimate email campaign likely
Session Anomaly Warning
Two concurrent sessions for user mike.t@3bids.io on different devices
SecurityEventsScreen component. useQuery(api.admin.security.list) with auto-refresh, severity filtering, investigate action
Data Change Log
9:41
Data Changes
All
Create
Update
Delete
Bulk Change Detected
47 records in contractorProfile modified in 2 min window
Recent ChangesExport
contractorProfile · UPDATE
Record: ctr_8f2a9...
bio "Expert roofer" "Licensed roofer, 15yr exp"
phone "330-555-0142" "330-555-0199"
jobs · CREATE
Record: job_4f83b...
title "Kitchen remodel — full gut"
budget $12,500
status draft
posterProperties · DELETE
Record: prop_2c91e...
address "456 Elm St, Cuyahoga Falls"
type "residential"
escrow · UPDATE
Record: esc_7d4a2...
status "hold_period" "funded"
DataChangeLog component. useQuery(api.admin.auditLogs.dataChanges) with field-level diffs, rollback via mutation
Financial
Payment Audit
9:41
Payment Audit
$48.2K
Collected
$41.7K
Paid Out
$6.5K
In Escrow
All
Escrow
Payouts
Refunds
Webhooks
TransactionsReconcile
Escrow Released
Job #4821 · Ohio Roofing Co · Roof repair
+$3,200
8m ago
Reconciled
First Payout (40%)
Job #4819 · Summit Plumbing · Pipe replacement
-$920
42m ago
Reconciled
Escrow Hold Created
Job #4823 · Karen M. · Kitchen backsplash
+$1,850
1h ago
Pending
Refund Processed
Job #4790 · Tom K. · Dispute resolution
-$450
3h ago
Reconciled
Stripe Webhook
payment_intent.succeeded · pi_3R9x...
+$2,400
3h ago
Reconciled
Platform Fee Collected
8.5% of $3,200 · Job #4821 · Ohio Roofing
+$272
8m ago
Reconciled
Webhook Failed
charge.refunded · evt_1R8y... · 3 retries remaining
-$200
5h ago
Failed
PaymentAuditScreen component. useQuery(api.admin.payments.auditTrail) with reconciliation status, Stripe webhook correlation
Compliance
Compliance Dashboard
9:41
Compliance
84%
Compliance Score
3 items need attention before next audit
Regulation Checklist
PCI DSS Level 4
Payment card data handled via Stripe — no local storage
Compliant
SOC 2 Type I
Access controls, encryption, audit logging verified
Compliant
GDPR — Right to Erasure
3 pending data deletion requests — 14 days remaining
Action Needed
CCPA Compliance
Privacy policy updated, opt-out mechanism active
Compliant
Data Encryption at Rest
Backup storage missing AES-256 encryption — overdue
Non-Compliant
Data Retention
Audit Logs
1 Year · 2.4 GB
Within Policy
User Data (Inactive)
90 Days · 340 MB
Within Policy
Payment Records
7 Years · 1.1 GB
Review Soon
Audit Schedule
Next External Audit: March 15, 2026
SOC 2 Type II audit by Deloitte — 19 days away
Export Report for Auditors
ComplianceDashboard component. useQuery(api.admin.compliance.overview) with score gauge, regulation checklist, retention summary
Export & Retention
9:41
Export & Retention
Export Format
CSV
Spreadsheet-compatible, best for data analysis
JSON
Structured data, ideal for API integrations
PDF Report
Formatted for auditors, includes summary charts
Date Range
From
Jan 1, 2026
To
Feb 24, 2026
Filter Summary
Categories: Auth, Data, Payment, Admin
Severity: Warning, Critical
Actors: All types
Est. records: 14,392
Export 14,392 Records (CSV)
Retention Policy
30d
Short Term
90d
Standard
1yr
Extended
Permanent
Auto-Archive
Move expired logs to cold storage automatically
Compress Archived Logs
Reduce storage by ~60% with gzip compression
Notify Before Deletion
Email admins 7 days before logs are purged
Storage Usage
3.8 GB of 10 GB used 38%
Audit Logs2.4 GB
Security Events620 MB
Payment Records780 MB
Archive Logs Older Than 1 Year
ExportRetentionScreen component. useMutation(api.admin.auditLogs.export) with format picker, retention policy via admin settings
Data Architecture

auditLogs (Schema)

_id: Id<"auditLogs">
timestamp: number // Date.now()
actorId: string // Clerk userId
actorType: "poster" | "contractor" | "admin" | "system"
actorName: string
action: string // e.g. "settings.platformFee.update"
category: "auth" | "data" | "payment" | "admin" | "api"
severity: "info" | "warning" | "critical"
entityType: string // table name
entityId: string
before: v.optional(v.any()) // snapshot before
after: v.optional(v.any()) // snapshot after
ipAddress: v.optional(v.string())
userAgent: v.optional(v.string())
sessionId: v.optional(v.string())
metadata: v.optional(v.any())

securityEvents (Schema)

_id: Id<"securityEvents">
timestamp: number
eventType: "failed_login" | "password_reset" | "rate_limit" | "ip_anomaly" | "session_anomaly"
severity: "info" | "warning" | "critical"
userId: v.optional(v.string())
ipAddress: string
description: string
resolved: boolean
resolvedBy: v.optional(v.string())
resolvedAt: v.optional(v.number())
metadata: v.optional(v.any())

complianceChecks (Schema)

_id: Id<"complianceChecks">
regulation: "pci_dss" | "soc2" | "gdpr" | "ccpa"
status: "compliant" | "action_needed" | "non_compliant"
title: string
description: string
lastChecked: number
nextAuditDate: v.optional(v.number())
auditor: v.optional(v.string())
score: v.optional(v.number()) // 0-100
findings: v.optional(v.array(v.string()))

Retention Policies

// Stored in adminSettings table

auditLogRetention: "30d" | "90d" | "1yr" | "permanent"
securityEventRetention: string
paymentRecordRetention: string // min 7yr for PCI
autoArchive: boolean
compressArchived: boolean
notifyBeforeDeletion: boolean
deletionNoticeDays: number // default 7

Convex Queries

// api.admin.auditLogs
list({ category?, severity?, actorType?, search?, limit })
getById({ logId: Id<"auditLogs"> })
dataChanges({ entityType?, operation?, limit })
export({ format, dateRange, filters })

// api.admin.security
list({ eventType?, severity?, resolved? })
investigate({ eventId: Id<"securityEvents"> })
resolve({ eventId, resolution: string })

// api.admin.compliance
overview() // returns score + checklist
updateStatus({ checkId, status })

// api.admin.payments
auditTrail({ type?, dateRange?, reconciled? })

Hooks & Components

// Hooks
useAuditLogFeed() // real-time subscription
useSecurityAlerts() // critical event push
useComplianceScore() // computed score
useAuditExport() // export mutation

// Components
AuditLogFeed // feed + search + filters
AuditEventDetail // full event w/ diff
AuditFilterSheet // bottom sheet filters
SecurityEventsScreen // auth-focused view
DataChangeLog // CRUD diff log
PaymentAuditScreen // financial events
ComplianceDashboard // score + checklist
ExportRetentionScreen // export + policy
DiffViewer // before/after rendering
SeverityBadge // info/warning/critical
ComplianceGauge // circular score ring
Log Feed & Event Detail
9:41

Log Feed & Event Detail

Log Feed
Recent Activity
10:42 AM User login — admin@3bids.io
10:38 AM Job #2847 status change
10:35 AM Payment $4,200 processed
10:30 AM Contractor verified — ID #892
Quick Filters
All Events 1,247
Security 89
Financial 156
User Actions 834
Event Detail
Event #AUD-2847
Type User Action
Actor admin@3bids.io
Resource Job #2847
IP Address 192.168.1.42
Timestamp Mar 11, 2026 10:42 AM
Change Details
Field status
Old Value open
New Value in_progress
Reason Contractor accepted

Security & Compliance
9:41

Security Events & Compliance

Security Events
Security Summary
Failed Logins (24h) 12
Suspicious IPs 3
Permission Changes 7
API Key Rotations 2
Recent Alerts
09:15 AM Multiple failed logins — user@example.com
08:42 AM New IP — admin session
Yesterday API key rotated — Stripe webhook
Compliance
Compliance Score
Overall 94%
Data Retention 100%
Access Controls 92%
Audit Coverage 90%
Export & Retention
Retention Period 7 years
Last Export Mar 10, 2026
Storage Used 2.4 GB
Auto-Archive Enabled

Financial Audit Trail
9:41

Payment Audit & Data Changes

Payment Audit
Transaction Log
Today $18,420
Escrow Holds $12,800
Payouts $5,620
Refunds $0
Recent Transactions
10:35 AM Escrow funded — $4,200
09:50 AM Payout sent — $1,680
09:20 AM Escrow funded — $2,100
Data Changes
Schema Changes
Today 3 changes
This Week 12 changes
Last Migration Mar 9, 2026
Data Integrity
Consistency Check Passed
Orphaned Records 0
Last Scan 2h ago
Audit Operations Center
https://admin.3bids.io/audit-logs
3Bids Admin
admin.3bids.io
MAIN
Log Feed
Filters
Security
Financial
Compliance
Export
DA
Danny Admin
Platform Admin

Audit Logs

1,247 Events Today 94% Compliance
Overview
Dashboard
Complete audit logs with real-time data, analytics, and management tools.
Quick Actions
Full desktop layout combines all mobile screens into a dense, actionable dashboard with sidebar navigation, data tables, charts, and management controls.
Web DashboardThis web view consolidates all mobile screens into a single responsive dashboard. Sidebar navigation replaces tab-based mobile flow, with data density optimized for desktop viewport.