> ## Documentation Index
> Fetch the complete documentation index at: https://docs.evomarketing.co/llms.txt
> Use this file to discover all available pages before exploring further.

# iOS app overview

> Creator iOS application architecture

The EVO Creator iOS app is a **SwiftUI application** for creators to manage their brand deals, view content performance, and communicate with the team.

## Technology stack

| Component  | Technology   | Purpose                  |
| ---------- | ------------ | ------------------------ |
| Language   | Swift 5.10   | Native iOS development   |
| UI         | SwiftUI      | Declarative UI framework |
| Min iOS    | iOS 17.0+    | Target platform          |
| Networking | URLSession   | API communication        |
| Push       | APNs         | Push notifications       |
| Project    | XcodeGen     | Project file generation  |
| Voice      | LiveKit      | Voice channels           |
| Analytics  | Facebook SDK | Attribution              |
| Animations | Lottie       | Animation playback       |

## Project structure

```
dialed/
  dialedApp.swift       # App entry point
  ContentView.swift     # Root view with shell routing
  
  Models/               # Swift Codable models
    DialedModels.swift  # Core models (~100K lines)
    StrategyContentModels.swift
    AdminCreativeModels.swift
    
  Views/                # SwiftUI views by feature
    DashboardView.swift
    ChatView.swift
    BrandHub/
    BrandDealsView.swift
    ProfileView.swift
    LoginView.swift
    Admin/
    
  Utils/                # Core utilities
    Auth/               # Authentication
    Data/               # Data stores
    Networking/         # API client
    Push/               # Push handling
    Realtime/           # ActionCable

DialedNotificationService/  # Push service extension
dialedShared/              # Shared notification code
```

## Build system

<Warning>
  **Never edit `project.pbxproj` directly.** The project uses XcodeGen. Regenerate with `xcodegen generate` after changing `project.yml`.
</Warning>

```bash theme={null}
# Regenerate project
xcodegen generate

# Build script (serializes across windows)
./scripts/evo.sh
```

## App architecture

### App entry

**File:** `dialedApp.swift`

```swift theme={null}
@main
struct DialedApp: App {
    @UIApplicationDelegateAdaptor var delegate: AppDelegate
    
    var body: some Scene {
        WindowGroup {
            ContentView()
        }
    }
}
```

### Root routing

**File:** `ContentView.swift`

Routes based on auth state:

* `signedOut` → `LoginView`
* `signedIn` (creator) → `CreatorShellView`
* `signedIn` (admin) → `AdminShellView`
* `blocked` → Error message

### Creator shell

Five-tab navigation:

| Tab | View            | Purpose            |
| --- | --------------- | ------------------ |
| 0   | Home            | Dashboard overview |
| 1   | My Brands       | Brand hubs         |
| 2   | Community       | Chat               |
| 3   | Analytics/Deals | Brand deals        |
| 4   | Profile         | Settings           |

## Key screens

### Dashboard

Shows creator's performance:

* Active brand count
* Total placements
* View metrics
* Recent activity

### Brand Hub

Per-brand view with:

* Strategy document
* Placement progress
* Leaderboard position
* Chat access
* Weekly reports

### Chat

Community messaging:

* Channel list
* Direct messages
* Message composition
* Typing indicators
* Reactions

### Brand Deals

Job board browser:

* Available deals
* Application form
* Status tracking

### Profile

Settings and account:

* Connected accounts
* Notification preferences
* Support access
* Sign out

## Data stores

Located in `Utils/Data/`:

| Store                | Purpose                    |
| -------------------- | -------------------------- |
| `CreatorDataStore`   | Main creator state         |
| `ChatStore`          | Chat channels and messages |
| `AdminDataStore`     | Admin-specific state       |
| `NotificationsStore` | Bell notifications         |
| `SnapshotCache`      | Disk persistence           |

### Caching pattern

```swift theme={null}
func hydrateFromDisk(userId: String) { ... }  // Restore on launch
func saveSnapshot() { ... }                    // Persist after refresh
```

## Running locally

```bash theme={null}
# Clone repo
git clone https://github.com/Evo-Marketing-LLC/evo-dialed-creator-ios.git
cd evo-dialed-creator-ios

# Generate project
xcodegen generate

# Open in Xcode
open dialed.xcodeproj

# Select simulator and run (Cmd+R)
```

## Related documentation

* [Screens](/ios/screens) - Screen details
* [Push Notifications](/ios/push-notifications) - Push handling
