Prompt Details
Model
Chat - (gpt-5.6)
Token size
2,908
Example input
[Describe the app, core features, user workflows and business requirements]: A field-service app for technicians who visit customer locations. Technicians receive assigned jobs, view customer details, scan equipment QR codes, capture photos, complete inspection checklists, collect customer signatures, and submit service reports.
[Android, iOS, web, desktop or other required platforms]: Android + iPadOS
[React Native, Flutter, Expo, Kotlin Multiplatform, or no preference]: No preference
[API requirements, local storage, offline behavior, synchronization and data volume]: GraphQL backend. Technicians must continue working in areas with poor connectivity. Photos and completed reports must synchronize when connectivity returns.
[Expected users, app complexity, performance targets, background workloads and scalability needs]: 25,000 technicians, potentially 500+ checklist items per job, large photo attachments, rapid QR scanning, 8-hour field sessions.
Example output
PHASE 1 — REQUIREMENT RECONSTRUCTION
Confirmed Requirements
Technician-focused field-service workflow
Android + iPadOS
Job assignment and job details
QR/barcode scanning
Customer/location information
Inspection checklists
GPS
Photo capture
Digital signatures
Bluetooth printer
Offline operation
Offline maps
GraphQL backend
Large attachment synchronization
Enterprise-scale deployment
Long field sessions
Automated CI/CD
Technical Context
This is not primarily a consumer-content application.
The highest-risk areas are:
1. Offline reliability
2. Large photo storage
3. Background upload
4. Camera/QR scanning
5. Bluetooth printer integration
6. GPS behavior
7. Long-running field sessions
8. Data recovery
Assumptions
Each technician can have multiple assigned jobs.
A job can contain hundreds of checklist questions.
Photos belong to specific jobs or checklist items.
Completed reports must not be lost if connectivity disappears.
Customer signatures have business/legal importance.
The application needs to support enterprise-managed devices.
Unknowns
Required minimum Android version
Required iPadOS versions
Whether GPS must operate continuously
Printer models/protocols
Maximum photo size
Maximum offline duration
Whether administrators need remote device management
Exact GraphQL conflict-resolution requirements
These should be confirmed before final implementation.
---
PHASE 2 — CROSS-PLATFORM FRAMEWORK DECISION
Framework Comparison
Requirement React Native Expo Flutter Kotlin Multiplatform
Existing Dart expertise Low Low Excellent Low
Complex custom UI Strong Strong Excellent Good
Camera/QR Strong Strong Strong Strong
Bluetooth printer Good Potential native configuration Strong Strong
Offline-first architecture Strong Strong Excellent Excellent
iPad support Strong Strong Excellent Strong
Large interactive forms Strong Strong Excellent Good
Native customization Strong Strong Strong Excellent
Team productivity Medium Medium Excellent Low
Recommendation
Flutter is the strongest choice.
Why?
The team already has Dart experience, and the application requires:
Complex forms
Large checklist interfaces
Camera workflows
Offline data
Hardware integration
Long field sessions
iPad layouts
Flutter provides a consistent rendering environment while still allowing native platform channels when required.
Trade-off
Kotlin Multiplatform could provide deeper native sharing, but it would introduce a larger learning curve for the existing team.
React Native could also work, but it would provide less alignment with the team's existing Dart expertise.
---
PHASE 3 — APPLICATION ARCHITECTURE DESIGN
Use a feature-first Flutter architecture with clear domain/data boundaries.
lib/
├── app/
│ ├── router/
│ ├── theme/
│ └── bootstrap/
│
├── features/
│ ├── jobs/
│ ├── inspections/
│ ├── scanner/
│ ├── attachments/
│ ├── signatures/
│ ├── maps/
│ └── printing/
│
├── domain/
│ ├── entities/
│ ├── repositories/
│ └── services/
│
├── data/
│ ├── graphql/
│ ├── database/
│ ├── repositories/
│ └── synchronization/
│
├── platform/
│ ├── camera/
│ ├── bluetooth/
│ ├── location/
│ └── filesystem/
│
└── shared/
├── widgets/
├── errors/
└── utilities/
Dependency Direction
Presentation
↓
Application
↓
Domain
↓
Repository Interfaces
↓
Data / Platform Implementations
The domain layer should not know about:
Flutter widgets
GraphQL implementation details
Android APIs
iPadOS APIs
Bluetooth SDKs
This keeps business logic independently testable.
---
PHASE 4 — SHARED VS PLATFORM-SPECIFIC CODE
Capability Decision Reason
Job management UI Shared Same workflow
Inspection checklist Shared Same business rules
Validation Shared Platform-independent
GraphQL client Shared Same backend
Offline database Shared Same data model
Sync engine Shared Same synchronization rules
QR scanning UI Shared Same user workflow
Camera access Hybrid Native camera behavior underneath
GPS Hybrid OS permission/lifecycle differences
Bluetooth printer Platform adapter Hardware APIs can differ
File system Platform adapter Storage behavior differs
Digital signature Shared UI + platform storage Secure persistence differs
Offline maps Hybrid Map engine/platform behavior may differ
Important Boundary
Do not allow printer logic to enter the job feature:
JobScreen → Bluetooth API
Instead:
JobScreen
↓
PrintReportUseCase
↓
PrinterRepository
↓
Android Printer Adapter
iPadOS Printer Adapter
This prevents hardware-specific code from spreading through the application.
---
PHASE 5 — STATE MANAGEMENT ARCHITECTURE
State should be divided according to ownership.
UI State
Examples:
Expanded checklist section
Current tab
Scanner overlay
Temporary form values
Keep this close to the relevant widget/feature.
Job State
Owned by the job feature.
Job
├── Customer
├── Location
├── Checklist
├── Photos
└── Signature
Persistent State
Stored locally:
Assigned jobs
Checklist responses
Upload status
Attachments
Draft reports
Synchronization State
Each important record should expose something similar to:
Local
Pending Upload
Uploading
Uploaded
Failed
Needs Review
State Flow
Technician Action
↓
Use Case
↓
Local Repository
↓
UI Updates Immediately
↓
Sync Queue
↓
Remote GraphQL API
The application should not require the server response before confirming local work.
---
PHASE 6 — NAVIGATION ARCHITECTURE
Application
│
├── Authentication
│ ├── Login
│ └── Device Verification
│
└── Technician Workspace
│
├── Job Queue
│
├── Job Details
│ ├── Customer
│ ├── Equipment
│ ├── Inspection
│ ├── Photos
│ ├── Signature
│ └── Report
│
└── Settings
Inspection Flow
Job
↓
Equipment Scan
↓
Inspection Checklist
↓
Capture Evidence
↓
Customer Signature
↓
Review Report
↓
Submit
iPad Behavior
The iPad should use available larger-screen space.
For example:
┌─────────────────┬──────────────────────┐
│ Job Sections │ Current Section │
│ │ │
│ Customer │ Inspection Questions │
│ Equipment │ │
│ Inspection │ │
│ Photos │ │
│ Signature │ │
└─────────────────┴──────────────────────┘
On smaller Android devices, use a single-column navigation flow.
This is a case where responsive shared UI is better than duplicating entire screens.
---
PHASE 7 — DATA & OFFLINE ARCHITECTURE
This is the most critical part of the application.
Local Database
Store:
Technician
Job
Customer
Equipment
Checklist
ChecklistResponse
Attachment
Signature
SyncOperation
Offline-first workflow
Open Job
↓
Read Local Database
↓
Technician Works
↓
Save Every Important Action Locally
↓
Create Sync Operations
↓
Connectivity Returns
↓
Synchronization
Photos
Do not immediately upload full-resolution images synchronously.
Instead:
Camera
↓
Local File
↓
Attachment Record
↓
Compression/Processing
↓
Upload Queue
↓
Cloud Storage
↓
GraphQL Metadata Update
Conflict Resolution
Different data types need different strategies.
Checklist response
Use version-aware updates.
Technician notes
Prefer explicit merge rules.
Job assignment
Server should remain authoritative.
Attachments
Use immutable attachment IDs.
Completed report
Once submitted, treat it as a controlled state transition rather than allowing unrestricted overwrites.
---
PHASE 8 — NATIVE MODULE ARCHITECTURE
QR Scanner
Use a Flutter-compatible scanning implementation where possible.
Only introduce custom native code if required by the scanner hardware or performance requirements.
Bluetooth Printer
Create:
PrinterService
Interface:
connect()
discover()
print()
disconnect()
Platform implementations:
AndroidPrinterService
iPadPrinterService
Failure behavior
If printing fails:
Print Failed
↓
Keep Report Locally
↓
Show Retry
↓
Allow Later Printing
The report must never be lost because a printer is unavailable.
GPS
Expose:
LocationService
Handle:
Permission denied
Permission revoked
Location unavailable
Reduced accuracy
Background restrictions
Digital Signature
Store the signature locally with the report and synchronize it as an attachment or structured record according to backend requirements.
---
PHASE 9 — PUSH NOTIFICATION ARCHITECTURE
Notifications can inform technicians about:
New job assignment
Job reassignment
Schedule changes
Urgent service requests
Report rejection
Administrative messages
Flow
Backend
↓
Push Provider
↓
Device
↓
Notification
↓
Route Resolver
↓
Relevant Job
Example:
New Job Assigned
↓
Tap Notification
↓
Authentication Check
↓
Job ID Validation
↓
Open Job Details
Important
Do not place sensitive customer information directly into notification text.
Instead:
"New service assignment"
rather than exposing confidential customer details.
---
PHASE 10 — DEEP LINKING ARCHITECTURE
Use secure app/universal links where appropriate.
Example:
https://field.example.com/jobs/84521
Flow:
Incoming Link
↓
Parse Job ID
↓
Validate Format
↓
Check Authentication
↓
Check Local Cache
↓
Fetch if Necessary
↓
Open Job
Offline Deep Link
If the requested job exists locally:
Deep Link
↓
Local Job Found
↓
Open Immediately
If it does not:
Deep Link
↓
No Local Data
↓
No Network
↓
Friendly Offline Message
No crash and no infinite loading.
---
PHASE 11 — BACKGROUND EXECUTION ARCHITECTURE
Background work should primarily support synchronization rather than continuous processing.
Photo Upload
Attachment Pending
↓
Network Available
↓
Upload Eligible
↓
Upload
↓
Verify
↓
Mark Complete
Retry
Use bounded retry with increasing delays.
Example:
Attempt 1
↓
Failure
↓
Wait
↓
Attempt 2
↓
Failure
↓
Wait Longer
↓
Attempt 3
After repeated failures:
Sync Failed
↓
Persist Error
↓
Show Pending Status
↓
Retry on Later Opportunity
Battery Protection
Do not continuously poll GPS or server endpoints unless the actual product requirement requires it.
---
PHASE 12 — PERFORMANCE ARCHITECTURE
The application has a major performance risk: 500+ checklist items plus large photos.
Checklist
Do not render every complex widget simultaneously.
Use:
Lazy rendering
Section-based loading
Efficient list rendering
Minimal rebuilds
Photo Processing
Resize/compress before upload where business requirements permit.
Maintain the original only if legally or operationally required.
QR Scanning
The scanning screen should minimize unnecessary widget rebuilds.
Memory
Avoid loading all job photos into memory.
Use file references and thumbnails.
Performance Budgets
Suggested initial targets:
Job screen interaction: under 100 ms perceived response
QR scan feedback: near-immediate
Checklist scrolling: smooth 60 FPS target
Avoid loading hundreds of full-resolution images simultaneously
Keep startup work limited to essential initialization
Measure these on representative enterprise devices.
---
PHASE 13 — SECURITY & RELIABILITY ARCHITECTURE
Authentication
Use secure authentication tokens and platform-secure credential storage.
Authorization
Never rely only on the mobile UI to enforce permissions.
The server must enforce:
Technician → Authorized Jobs
Technician → Authorized Customer Data
Technician → Authorized Actions
Local Security
Sensitive customer data should be minimized and protected at rest where required by the threat model.
Photo Security
Photos should not be exposed through uncontrolled public URLs.
Use controlled upload/download mechanisms.
Logging
Do not log:
Customer secrets
Authentication credentials
Private documents
Tokens
Full sensitive payloads
Crash Recovery
If the application crashes during inspection:
Crash
↓
Restart
↓
Recover Local Draft
↓
Resume Inspection
This is a critical requirement for field software.
---
PHASE 14 — TESTING & QUALITY ARCHITECTURE
Unit Tests
Test:
Checklist validation
Report generation
Job state transitions
Sync decisions
Retry rules
Conflict resolution
Permission logic
Widget Tests
Test:
Checklist rendering
Job screens
Signature UI
Error states
Offline indicators
Integration Tests
Test:
UI
↓
Use Case
↓
Local Database
↓
Sync Queue
Native Tests
Platform-specific tests for:
Bluetooth
Camera
GPS
File storage
Permissions
Offline Tests
Simulate:
1. No connection before opening job
2. Connection loss during inspection
3. Connection loss during photo upload
4. App restart with pending changes
5. Duplicate synchronization
6. Server rejection
7. Partial upload
E2E Scenario
Login
↓
Open Job
↓
Scan Equipment
↓
Complete Checklist
↓
Capture Photo
↓
Sign Report
↓
Lose Network
↓
Save Report
↓
Reconnect
↓
Synchronize
↓
Verify Server Result
---
PHASE 15 — BUILD, CI/CD & RELEASE STRATEGY
Environment Structure
Development
↓
QA
↓
Enterprise Staging
↓
Production
Each environment gets separate configuration.
CI Pipeline
Pull Request
↓
Formatting
↓
Static Analysis
↓
Unit Tests
↓
Widget Tests
↓
Integration Tests
↓
Build Android
↓
Build iPadOS
↓
Release Candidate
Enterprise Deployment
Because this is a field-service application, consider:
Managed device deployment
Enterprise app distribution
Device configuration policies
Controlled rollout
Internal testing groups
The exact distribution model should be confirmed with the organization's device-management strategy.
Release Strategy
Use:
Internal QA
↓
Pilot Technicians
↓
Limited Production
↓
Full Rollout
Monitor crash rates and synchronization failures after each release.
---
PHASE 16 — FINAL CROSS-PLATFORM ARCHITECTURE BLUEPRINT
1. 🎯 Architecture Executive Summary
Flutter + feature-oriented architecture + local-first data layer + platform adapters.
The architecture prioritizes:
Field reliability
Offline operation
Large checklist performance
Hardware integration
Code reuse
Recoverability
The application should remain usable even when the network or printer fails.
---
2. ⚖️ Framework Decision
Selected: Flutter
Reason: Strong team expertise, excellent cross-platform UI consistency, suitable hardware integration model, and good fit for complex field workflows.
Trade-off: Some hardware integrations will still require native/platform-specific work.
---
3. 🏗️ System Architecture
Flutter Presentation
↓
Feature/Application Layer
↓
Domain Layer
↓
Repository Interfaces
↓
Local DB / GraphQL / Sync
↓
Platform Adapters
---
4. 🔄 Shared Code Boundary
Share:
Business rules
Models
Repository interfaces
GraphQL operations
Offline engine
Sync logic
Most UI
Keep platform-specific:
Bluetooth implementation
OS permission details
Filesystem edge cases
Specialized hardware integrations
---
5. 🧠 State Architecture
Use:
Widget State
+
Feature State
+
Persistent Database
+
Synchronization State
Do not create one giant application-wide state object.
---
6. 🧭 Navigation
Auth
↓
Job Queue
↓
Job
├── Inspection
├── Evidence
├── Signature
└── Report
Use adaptive layouts for phone-like Android screens and larger iPad displays.
---
7. 🗄️ Data Architecture
Local database is the operational source for offline workflows.
GraphQL provides server synchronization.
Attachments use a separate upload pipeline.
---
8. 🔌 Native Architecture
Flutter Interface
↓
Platform Service
↙ ↘
Android iPadOS
Use native code only where framework/plugin capabilities are insufficient.
---
9. 📡 Notifications
Push events should resolve to application routes.
Push
↓
Job ID
↓
Route
↓
Job Screen
Sensitive information stays out of notification payloads.
---
10. 🔗 Deep Links
Every supported link maps to a stable route.
Invalid or unavailable jobs receive safe fallback handling.
---
11. ⏱️ Background Execution
Use background execution primarily for:
Pending uploads
Synchronization
Deferred processing
Never assume the application can execute continuously in the background.
---
12. ⚡ Performance
Highest priorities:
1. Checklist rendering
2. Photo memory usage
3. Database queries
4. Sync throughput
5. QR scanning responsiveness
6. Long-session memory stability
---
13. 🛡️ Security & Reliability
Most important controls:
Secure authentication storage
Server-side authorization
Protected customer data
Secure attachment handling
Draft recovery
Persistent sync queue
Crash reporting
Safe retry behavior
---
14. 🧪 Testing
Testing must include both:
Shared Flutter Logic
+
Android Hardware
+
iPadOS Hardware
Offline and synchronization testing should be treated as first-class test categories rather than edge cases.
---
15. 🚀 Build & Release
Developer
↓
CI
↓
Automated Tests
↓
QA
↓
Pilot
↓
Limited Rollout
↓
Production
↓
Crash + Sync Monitoring
---
16. 📋 Final Implementation Roadmap
Month 1
Flutter foundation
Authentication
Job model
Navigation
Local database
GraphQL integration
Month 2
Job workflow
Inspection checklist
Offline persistence
Draft recovery
Month 3
Camera
QR scanning
GPS
Photo processing
Signature workflow
Month 4
Synchronization engine
Bluetooth printing
Push notifications
Deep links
Offline maps
Month 5
Performance profiling
Hardware testing
Offline stress testing
Security testing
Enterprise pilot
Production rollout
🏆 FINAL ARCHITECTURAL VERDICT
Best architecture: Flutter + local-first data architecture + shared domain logic + explicit platform adapters.
The key decision is not "make everything shared."
Instead:
SHARED
│
┌────────────┼────────────┐
│ │ │
Business Data UI
Logic Model Workflows
│ │ │
└────────────┼────────────┘
│
PLATFORM BOUNDARY
↙ ↘
Android iPadOS
Hardware Hardware
This gives the engineering team a realistic production architecture without allowing offline synchronization, Bluetooth, GPS, camera, or enterprise-device constraints to become hidden technical debt.
By purchasing this prompt, you agree to our terms of service
GPT-5.6
This prompt analyzes the requirements and produces a complete architecture blueprint for React Native, Flutter, Expo, or Kotlin Mult
🏗️ Choose the right cross-platform architecture
🔄 Decide shared vs platform-specific code
🧠 Design state & navigation systems
🔌 Plan native modules & integrations
📡 Architect offline & background behavior
⚡ Optimize app performance
🚀 Design build & release strategy
Turn complex mobile requirements into a scalable, production-ready architecture blueprint. 🚀📱
...more
Added over 1 month ago
