Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DroneChatMVP

DroneChatMVP is a SwiftUI iOS client for a drone-assisted photo capture workflow. The app uses a chat-first interface to start capture missions, follow live mission status, wait for AI retouching, and keep generated images in an in-app album.

At A Glance

Item Summary
Platform SwiftUI iOS client
Workflow Chat mission -> live status -> retouch wait -> image result -> album
Backend pattern Submit task, poll mission state, fetch final outputs
User-facing focus Mission control, progress transparency, result browsing
Public boundary No private backend addresses, debug photos, or production service credentials

Features

  • Chat-based mission control for quick, precise, and director-style capture flows.
  • Live mission status cards with staged progress for flight and capture tasks.
  • AI retouching wait state with staged, time-based feedback and resilient result recovery.
  • Mission result cards with local-first image loading and remote fallback.
  • In-app album with sandbox image caching, grouped before/after presentation, full-screen preview, swipe navigation, landscape viewing, save-to-Photos, and long-press deletion.
  • Conversation persistence for recent task messages.
  • Voice input powered by Apple's speech recognition APIs.

Tech Stack

  • SwiftUI
  • Combine
  • Swift concurrency with async / await
  • URLSession
  • PhotosUI and Photos
  • UserDefaults + Application Support file storage
  • XcodeGen

Interaction Model

  • The chat view starts quick, precise, and director-style capture requests.
  • Mission cards make asynchronous backend progress visible instead of hiding long waits.
  • Retouch status is treated as a first-class state, not an afterthought after capture.
  • The album keeps local access to results and before/after comparisons once tasks complete.

Project Structure

DroneChatMVP/
  App/                 App entry point and orientation support
  Models/              DTOs, chat models, album models
  Services/            API and speech services
  ViewModels/          Chat, conversation, and album state
  Views/               SwiftUI screens and reusable UI
  Resources/           Info.plist and asset catalog
docs/                  Static frontend reference material
project.yml            XcodeGen project definition

Backend Configuration

The public version uses a local placeholder backend URL:

URL(string: "http://localhost:8000")!

For a real device or simulator workflow, update DroneChatMVP/Services/AppConfiguration.swift with the reachable backend host for your environment.

The app expects a backend with endpoints similar to:

  • POST /chat/submit
  • GET /mission/status/{missionId}
  • GET /mission/result/{missionId}
  • POST /mission/terminate
  • POST /images/auto-retouch

Mission result payloads can include original capture URLs, final image URLs, retouched image URLs, director shots, retouch status, and retouch error fields.

Running Locally

  1. Install XcodeGen if needed:

    brew install xcodegen
  2. Generate the Xcode project:

    xcodegen generate
  3. Open the project:

    open DroneChatMVP.xcodeproj
  4. Build and run with Xcode, or from the command line:

    xcodebuild -quiet -project DroneChatMVP.xcodeproj -scheme DroneChatMVP -configuration Debug -sdk iphonesimulator CODE_SIGNING_ALLOWED=NO build

Notes

  • The repository does not include private debug photos or device-specific backend addresses.
  • The app stores album images in the app sandbox and stores only image metadata in UserDefaults.
  • The default bundle identifier is com.example.DroneChatMVP; change it before signing or distributing your own build.

About

SwiftUI iOS client for drone photo mission control, live status tracking, retouch progress, and result browsing.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages