# BiznisPortal Partner Mobile Release

## Šta je sada spremno

Repo sada ima kompletan release setup za `BiznisPortal Partner`:

- Android debug build
- Android release build skriptu
- iOS simulator build
- iOS release archive/export skriptu
- direktni native push iz BiznisPortal servera preko `FCM` i `APNS`
- fallback webhook režim ako želite eksterni push gateway

Važno: store-ready release i pravo slanje produkcionih push poruka i dalje traže vaše stvarne kredencijale.

## Obavezne env promenljive

### Android release signing

```env
ANDROID_KEYSTORE_FILE="/apsolutna/putanja/do/upload-keystore.jks"
ANDROID_KEYSTORE_PASSWORD="..."
ANDROID_KEY_ALIAS="upload"
ANDROID_KEY_PASSWORD="..."
```

Opciono:

```env
CAPACITOR_ANDROID_VERSION_CODE="1"
CAPACITOR_ANDROID_VERSION_NAME="1.0.0"
```

### iOS release signing

```env
IOS_DEVELOPMENT_TEAM="ABCDE12345"
IOS_BUNDLE_IDENTIFIER="rs.biznisportal.partner"
IOS_EXPORT_METHOD="app-store"
IOS_CODE_SIGN_STYLE="Automatic"
IOS_PROVISIONING_PROFILE_SPECIFIER=""
IOS_ALLOW_PROVISIONING_UPDATES="false"
```

### Native push

Ako koristite `direct` režim:

```env
NOTIFICATIONS_NATIVE_PUSH_ENABLED="true"
NOTIFICATIONS_NATIVE_PUSH_MODE="direct"

NOTIFICATIONS_FCM_PROJECT_ID="..."
NOTIFICATIONS_FCM_CLIENT_EMAIL="firebase-adminsdk-...@...iam.gserviceaccount.com"
NOTIFICATIONS_FCM_PRIVATE_KEY="-----BEGIN PRIVATE KEY-----\\n...\\n-----END PRIVATE KEY-----"

NOTIFICATIONS_APNS_KEY_ID="..."
NOTIFICATIONS_APNS_TEAM_ID="..."
NOTIFICATIONS_APNS_PRIVATE_KEY="-----BEGIN PRIVATE KEY-----\\n...\\n-----END PRIVATE KEY-----"
NOTIFICATIONS_APNS_BUNDLE_ID="rs.biznisportal.partner"
NOTIFICATIONS_APNS_USE_SANDBOX="false"
```

Ako koristite `webhook` režim:

```env
NOTIFICATIONS_NATIVE_PUSH_ENABLED="true"
NOTIFICATIONS_NATIVE_PUSH_MODE="webhook"
NOTIFICATIONS_NATIVE_PUSH_WEBHOOK_URL="https://push-gateway.example.com/send"
```

## Android release build

1. Dodajte `google-services.json` u:
   - `android/app/google-services.json`
2. Proverite da su signing env promenljive postavljene.
3. Pokrenite:

```bash
npm run native:android:release
```

Artefakti:

- `android/app/build/outputs/apk/release/app-release.apk`
- `android/app/build/outputs/bundle/release/app-release.aab`

## iOS release build

1. Dodajte `GoogleService-Info.plist` u Xcode target `App` ako koristite Firebase tok.
2. U Apple Developer nalogu uključite:
   - Push Notifications
   - Associated Domains po potrebi
   - provisioning profile za bundle ID
3. Proverite da je Xcode licenca prihvaćena:

```bash
sudo xcodebuild -license accept
sudo xcodebuild -runFirstLaunch
```

4. Pokrenite:

```bash
npm run native:ios:release
```

Artefakti:

- `output/ios/BiznisPortalPartner.xcarchive`
- `output/ios/export`

## Produkcioni push tok

Partner aplikacija sada podržava 3 moda:

1. `web push` za browser/PWA
2. `native direct` za Capacitor wrapper preko FCM/APNS
3. `native webhook` za eksterni gateway ako želite da push isporuku odvojite od glavnog servera

Interna ruta za test i internu integraciju:

- `POST /api/internal/native-push`

Zaštita:

- `Authorization: Bearer <maintenance-token>`

## Preporučeni redosled za release

1. `npm run cap:sync`
2. `npm run native:android:build`
3. `npm run native:ios:build`
4. ubaciti signing kredencijale
5. `npm run native:android:release`
6. `npm run native:ios:release`
7. testirati push na realnim uređajima
8. tek onda pripremiti store submission

## Realni spoljašnji blokatori

Ovo kod ne može da izmisli umesto vas:

- Android upload keystore
- Apple Development Team i provisioning
- Firebase service account za FCM
- APNS Auth Key (`.p8`)
- finalni store metadata, screenshots i pravni podaci
