Files
boc/PROJECT.md
T
Bernt bae705aa97 ARCHITECTURE: NFC roadmap, edge AI, audit logging
- 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
2026-06-29 16:24:48 +00:00

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*