# BusinessCard Roadmap

This document tracks planned features and their implementation status.

## ✅ Completed Features

### High Priority (Core User Value)

- [x] **Dynamic contact fields system** - Unlimited fields with custom ordering
  - New `ContactField` SwiftData model for flexible field storage
  - `ContactFieldType` struct with 30+ field types across 8 categories
  - Drag-to-reorder support with haptic feedback
  - Sheet-based field editor with type-specific keyboards and placeholders
  - Multiple fields of the same type allowed (e.g., multiple emails)

- [x] **Custom social icons** - Brand-colored icons from asset catalog
  - Custom `.symbolset` assets for all major platforms
  - LinkedIn, X/Twitter, Instagram, Facebook, TikTok, Threads
  - Bluesky, Mastodon, Reddit, Twitch, YouTube, Discord
  - GitHub, Telegram, Slack, Matrix, Patreon, Ko-fi
  - Proper `Image()` vs `Image(systemName:)` handling via `iconImage()` helper

- [x] **Extended name fields** - Prefix, maiden name, pronouns
  - Expandable name section in editor
  - Prefix (Dr., Mr., Mrs., etc.)
  - Maiden name with parentheses formatting in display name
  - Preferred name with quotes formatting
  - Pronouns displayed next to name on card

- [x] **Accreditations as tags** - Tag bubble UI with inline editing
  - Horizontal ScrollView of tag chips
  - Tap to edit, check to save, x to delete
  - Comma-separated storage for vCard compatibility

- [x] **Clickable contact fields** - Deep linking to apps and actions
  - Email → mailto:
  - Phone → tel:
  - Social links → app deep links or web fallback
  - Address → Maps
  - Website → Safari

- [x] **More card fields** - Social media links, custom URLs, pronouns, bio
  - Added: pronouns, bio, LinkedIn, Twitter/X, Instagram, Facebook, TikTok, GitHub
  - Added: 2 custom link slots (title + URL)
  - vCard payload includes social profiles
  
- [x] **Profile photo support** - PhotosPicker integration
  - Added PhotosPicker to CardEditorView
  - Photos stored as Data with `@Attribute(.externalStorage)`
  - Photos display on cards, in editor preview, and contact avatars
  
- [x] **Contact notes/annotations** - Add notes, tags, follow-up reminders
  - Added: notes field (free text)
  - Added: tags (comma-separated, displayed as chips)
  - Added: follow-up date with overdue indicators
  - Added: "where you met" field
  - Added: email and phone for received contacts
  - Full ContactDetailView for editing annotations
  
- [x] **Save received cards** - Scan a QR to add someone else's card
  - Added QRScannerView with camera integration
  - Parses vCard data from scanned QR codes
  - Creates contacts marked as `isReceivedCard`
  - "Scan Card" button in Contacts toolbar

---

## 🔲 Planned Features

### Medium Priority (Differentiation)

- [ ] **Email signature export** - Generate HTML signature
  - Generate professional HTML email signature from card data
  - Copy to clipboard or share
  - Multiple signature styles/templates
  
- [ ] **Card analytics** - View/scan counts
  - Would require backend infrastructure
  - Track when cards are viewed/scanned
  - Show analytics dashboard
  
- [ ] **Virtual meeting background** - Generate image with QR
  - Create background image with card info + QR code
  - Export for Zoom, Teams, etc.
  - Multiple background styles

### Lower Priority (Advanced)

- [ ] **Real NFC** - Write card to NFC tags
  - Requires NFC entitlements
  - Requires physical NFC cards/tags
  - Write vCard data to NFC
  
- [ ] **Apple Wallet** - Add card to Wallet
  - Requires PKPass generation
  - May need backend for signing passes
  - Display QR in Wallet app
  
- [ ] **Team features** - Shared team cards
  - Requires user accounts
  - Requires backend infrastructure
  - Team branding, shared templates

---

## 🔧 Technical Improvements

### Completed

- [x] **SwiftData persistence** with CloudKit sync
- [x] **Bedrock integration** - Design system, QR code generator
- [x] **iOS-Watch sync** via App Groups
- [x] **Unit tests** for models, stores, and new features
- [x] **Fixed data persistence** - Removed aggressive store deletion on startup
- [x] **Custom symbol assets** - Brand icons in asset catalog with proper rendering
- [x] **Drag-and-drop reordering** - Using `draggable` and `dropDestination` modifiers

### Planned

- [ ] **WidgetKit extension** - Real home screen widgets
- [ ] **Spotlight indexing** - Search cards from iOS search
- [ ] **Siri shortcuts** - "Share my work card"
- [ ] **App Intents** - iOS 17+ action button support
- [ ] **Migrate legacy properties** - Move all cards to new ContactField array

---

## 📝 Notes

- Features marked with 🔲 are planned but not yet implemented
- Features requiring backend are deferred until infrastructure is available
- Priority may shift based on user feedback
- Legacy contact properties (email, phone, linkedIn, etc.) maintained for backward compatibility

---

*Last updated: January 8, 2026*
