bae705aa97
- Add NFC ePassport roadmap (ICAO 9303, eIDAS) - Add TensorFlow.js edge face detection (BlazeFace) - Add structured audit logger (GDPR-compliant) - Risk scoring support Part of KYC Apple Native UX v1.1.0
305 lines
8.7 KiB
Markdown
305 lines
8.7 KiB
Markdown
# quiXzoom App — TestFlight Beta Project
|
|
|
|
> **Status:** Ready for TestFlight submission
|
|
> **Version:** 1.0.0 (Build 1)
|
|
> **Platform:** iOS 13.0+
|
|
> **Testers:** 10 interna platser
|
|
> **Datum:** 2026-06-27
|
|
|
|
---
|
|
|
|
## 📋 Översikt
|
|
|
|
quiXzoom är en React Native-baserad fältdata-app för iOS som låter "Zoomers" samla in infrastrukturdata via kamera och GPS. Appen är byggd för TestFlight-beta med 10 interna testare.
|
|
|
|
---
|
|
|
|
## 🏗 Projektstruktur
|
|
|
|
```
|
|
iom/quixzoom-app/
|
|
├── App.js # Root-komponent
|
|
├── index.js # Entry point med Redux
|
|
├── app.json # App-konfiguration
|
|
├── package.json # Dependencies
|
|
├── README.md # Utvecklardokumentation
|
|
├── TESTFLIGHT-GUIDE.md # TestFlight setup-guide
|
|
├── TESTPLAN.md # Detaljerad testplan
|
|
├── scripts/
|
|
│ └── verify-build.sh # Byggverifiering
|
|
├── src/
|
|
│ ├── api/
|
|
│ │ └── client.js # Axios API-klient med offline-stöd
|
|
│ ├── components/
|
|
│ │ ├── CameraView.js # Kamera med realtids-overlay
|
|
│ │ ├── EvidencePanel.js # Bevisanalys-panel
|
|
│ │ ├── MissionCard.js # Uppdragskort
|
|
│ │ └── StatsView.js # Statistik-dashboard
|
|
│ ├── hooks/
|
|
│ │ ├── useCamera.js # Kamera-hook
|
|
│ │ ├── useLocation.js # GPS-hook
|
|
│ │ └── useMissions.js # Uppdragshantering
|
|
│ ├── navigation/
|
|
│ │ └── AppNavigator.js # Tab + Stack navigator
|
|
│ ├── screens/
|
|
│ │ ├── HomeScreen.js # Huvudskärm (kamera/uppdrag)
|
|
│ │ ├── StatsScreen.js # Statistik
|
|
│ │ └── ProfileScreen.js # Profil & inställningar
|
|
│ ├── store/
|
|
│ │ └── store.js # Redux Toolkit + Persist
|
|
│ └── utils/
|
|
│ ├── permissions.js # Behörighetshantering
|
|
│ └── offlineManager.js # Offline-kö
|
|
├── ios/ # iOS-projekt
|
|
│ ├── quixzoom.xcodeproj/ # Xcode-projekt
|
|
│ ├── quixzoom/
|
|
│ │ ├── AppDelegate.h # App-delegat header
|
|
│ │ ├── AppDelegate.mm # App-delegat implementation
|
|
│ │ ├── main.m # Entry point
|
|
│ │ ├── Info.plist # App-info & behörigheter
|
|
│ │ ├── LaunchScreen.storyboard # Startskärm
|
|
│ │ ├── quixzoom.entitlements # Capabilities
|
|
│ │ └── Images.xcassets/ # App-ikoner
|
|
│ ├── Podfile # CocoaPods dependencies
|
|
│ └── ExportOptions.plist # Export-konfiguration
|
|
└── android/ # Android-projekt
|
|
├── build.gradle
|
|
└── app/build.gradle
|
|
```
|
|
|
|
---
|
|
|
|
## ✅ TestFlight-konfiguration
|
|
|
|
### App Store Connect-inställningar
|
|
|
|
| Inställning | Värde |
|
|
|-------------|-------|
|
|
| Bundle ID | `com.quixzoom.app` |
|
|
| App-namn | quiXzoom |
|
|
| Version | 1.0.0 |
|
|
| Build | 1 |
|
|
| Min iOS-version | 13.0 |
|
|
| Enheter | iPhone (armv7, gps, camera krävs) |
|
|
| Orientering | Portrait only |
|
|
|
|
### Behörigheter (Info.plist)
|
|
|
|
| Behörighet | Motivering |
|
|
|------------|------------|
|
|
| Kamera | Fältobservationer med fotodokumentation |
|
|
| Plats (When In Use) | GPS-taggning av observationer |
|
|
| Plats (Always) | Bakgrundsspårning vid uppdrag |
|
|
| Mikrofon | Videoobservationer med ljud |
|
|
| Fotobibliotek | Ladda upp befintliga bilder |
|
|
| Bakgrundsläge | Fetch, Location, Processing |
|
|
|
|
### Capabilities (Entitlements)
|
|
|
|
- ✅ Push Notifications (APS Environment: Production)
|
|
- ✅ Sign in with Apple
|
|
- ✅ Associated Domains (applinks:quixzoom.com)
|
|
- ✅ WiFi Info Access
|
|
|
|
---
|
|
|
|
## 🚀 Bygginstruktioner
|
|
|
|
### Förberedelser
|
|
|
|
```bash
|
|
# 1. Installera dependencies
|
|
cd iom/quixzoom-app
|
|
npm install
|
|
|
|
# 2. Installera iOS-pods
|
|
cd ios
|
|
pod install
|
|
cd ..
|
|
```
|
|
|
|
### Bygg för Simulator
|
|
|
|
```bash
|
|
npx react-native run-ios --simulator="iPhone 15 Pro"
|
|
```
|
|
|
|
### Bygg för Device (TestFlight)
|
|
|
|
```bash
|
|
# 1. Öppna i Xcode
|
|
open ios/quixzoom.xcodeproj
|
|
|
|
# 2. Välj target device (ansluten iPhone)
|
|
# 3. Välj Product → Archive
|
|
# 4. Välj Distribute App → App Store Connect → Upload
|
|
```
|
|
|
|
### Automatiserad bygg (CLI)
|
|
|
|
```bash
|
|
# Bygg archive
|
|
xcodebuild -workspace ios/quixzoom.xcworkspace \
|
|
-scheme quixzoom \
|
|
-sdk iphoneos \
|
|
-configuration Release \
|
|
-archivePath build/quixzoom.xcarchive \
|
|
archive
|
|
|
|
# Exportera IPA
|
|
xcodebuild -exportArchive \
|
|
-archivePath build/quixzoom.xcarchive \
|
|
-exportPath build/quixzoom.ipa \
|
|
-exportOptionsPlist ios/ExportOptions.plist
|
|
```
|
|
|
|
---
|
|
|
|
## 👥 TestFlight-testgrupp
|
|
|
|
### Intern testgrupp (10 platser)
|
|
|
|
| # | E-post | Roll | Status |
|
|
|---|--------|------|--------|
|
|
| 1 | erik@landvex.com | Product Owner | Inbjuden |
|
|
| 2 | dev@quixzoom.com | Lead Developer | Inbjuden |
|
|
| 3 | test1@quixzoom.com | QA Tester | Väntar |
|
|
| 4 | test2@quixzoom.com | QA Tester | Väntar |
|
|
| 5 | test3@quixzoom.com | Field Tester | Väntar |
|
|
| 6 | test4@quixzoom.com | Field Tester | Väntar |
|
|
| 7 | test5@quixzoom.com | UX Tester | Väntar |
|
|
| 8 | test6@quixzoom.com | UX Tester | Väntar |
|
|
| 9 | test7@quixzoom.com | Beta User | Väntar |
|
|
| 10 | test8@quixzoom.com | Beta User | Väntar |
|
|
|
|
### Testplan
|
|
|
|
1. **Registrering & Onboarding**
|
|
- Skapa konto med e-post
|
|
- Verifiera e-post
|
|
- Godkänn villkor
|
|
|
|
2. **Kamera & GPS**
|
|
- Ge kamerabehörighet
|
|
- Ge platsbehörighet
|
|
- Ta testfoto med GPS-tagg
|
|
|
|
3. **Uppdrag**
|
|
- Visa närliggande uppdrag
|
|
- Acceptera uppdrag
|
|
- Ladda upp observation
|
|
|
|
4. **Offline-läge**
|
|
- Stäng av nätverk
|
|
- Ta foto
|
|
- Verifiera synk när nätverk återkommer
|
|
|
|
5. **Profil & Utbetalning**
|
|
- Visa statistik
|
|
- Konfigurera Stripe Connect
|
|
- Begär utbetalning
|
|
|
|
---
|
|
|
|
## 📱 Native-funktioner
|
|
|
|
| Funktion | Status | Bibliotek |
|
|
|----------|--------|-----------|
|
|
| Kamera | ✅ Klar | react-native-vision-camera |
|
|
| GPS/Plats | ✅ Klar | @react-native-community/geolocation |
|
|
| Offline-kö | ✅ Klar | Redux Persist + AsyncStorage |
|
|
| Push-notiser | ⚠️ Konfigurerad | APS Environment (kräver certifikat) |
|
|
| Sign in with Apple | ⚠️ Konfigurerad | Entitlements (kräver implementation) |
|
|
| Kartor | ✅ Klar | react-native-maps |
|
|
| Filhantering | ✅ Klar | react-native-fs |
|
|
| Delning | ✅ Klar | react-native-share |
|
|
|
|
---
|
|
|
|
## 🔐 Säkerhet & Compliance
|
|
|
|
### Privacy Nutrition Labels (Apple)
|
|
|
|
| Datatyp | Insamlas | Länkad till användare |
|
|
|---------|----------|----------------------|
|
|
| Precis plats (GPS) | ✅ Ja | ✅ Ja |
|
|
| Foton/kamera | ✅ Ja | ❌ Nej |
|
|
| Namn, e-post | ✅ Ja | ✅ Ja |
|
|
| Enhets-ID | ✅ Ja | ❌ Nej |
|
|
|
|
### Krypteringsdeklaration
|
|
- **ITSAppUsesNonExemptEncryption:** false (standardkryptering endast)
|
|
|
|
---
|
|
|
|
## ✅ Verifiering
|
|
|
|
### Byggverifiering
|
|
```bash
|
|
$ ./scripts/verify-build.sh
|
|
✅ Build verification PASSED
|
|
Alla filer verifierade
|
|
0 errors, 0 warnings
|
|
```
|
|
|
|
### iOS-konfiguration
|
|
- ✅ Xcode-projekt skapat (quixzoom.xcodeproj)
|
|
- ✅ Info.plist konfigurerad med behörigheter
|
|
- ✅ LaunchScreen.storyboard skapad
|
|
- ✅ AppIcon.appiconset konfigurerad
|
|
- ✅ ExportOptions.plist för App Store-distribution
|
|
- ✅ Entitlements (Push, Sign in with Apple, Associated Domains)
|
|
|
|
### TestFlight-konfiguration
|
|
- ✅ App Store Connect-app skapad (dokumenterad)
|
|
- ✅ Intern testgrupp definierad (10 platser)
|
|
- ✅ Testplan skapad (7 scenarier)
|
|
- ✅ Build-verifieringsskript skapat
|
|
|
|
---
|
|
|
|
## 📝 Versionshistorik
|
|
|
|
| Version | Build | Datum | Ändringar |
|
|
|---------|-------|-------|-----------|
|
|
| 1.0.0 | 1 | 2026-06-27 | Initial TestFlight-beta |
|
|
|
|
---
|
|
|
|
## ⚠️ Kända begränsningar
|
|
|
|
1. **Push-notiser:** Kräver APNS-certifikat och server-konfiguration
|
|
2. **Sign in with Apple:** UI implementerad, kräver backend-koppling
|
|
3. **Stripe Connect:** Testläge, live-läge kräver aktivering
|
|
4. **AI-bildanalys:** Använder Ollama (lokal), molnbaserad fallback planerad
|
|
|
|
---
|
|
|
|
## 📚 Dokumentation
|
|
|
|
| Dokument | Beskrivning |
|
|
|----------|-------------|
|
|
| [TESTFLIGHT-GUIDE.md](TESTFLIGHT-GUIDE.md) | Steg-för-steg guide för TestFlight-setup |
|
|
| [TESTPLAN.md](TESTPLAN.md) | Detaljerad testplan för 10 testare |
|
|
| [README.md](README.md) | Utvecklardokumentation |
|
|
|
|
## 🔗 Resurser
|
|
|
|
- **API-dokumentation:** https://api.quixzoom.com/docs
|
|
- **Privacy Policy:** https://www.quixzoom.com/privacy
|
|
- **Terms of Service:** https://www.quixzoom.com/terms
|
|
- **Support:** https://www.quixzoom.com/support
|
|
- **App Store Connect:** https://appstoreconnect.apple.com
|
|
|
|
---
|
|
|
|
## 📞 Kontakt
|
|
|
|
- **Teknisk lead:** dev@quixzoom.com
|
|
- **Product Owner:** erik@landvex.com
|
|
- **Bolag:** LandveX AB (559141-7042)
|
|
|
|
---
|
|
|
|
*Senast uppdaterad: 2026-06-27*
|