Install & connect the mobile app
The BottleCRM mobile app is a Flutter application that ships in the same repository (Django-CRM/mobile/) and talks to your backend over the same JSON API.
Building from source
cd Django-CRM/mobile
flutter pub get
flutter run # dev build on a connected device or simulator
For production builds:
flutter build apk --release # Android
flutter build appbundle --release # Android App Bundle
flutter build ios --release # iOS (on macOS)
Connecting to your backend
On first launch the app asks for the server URL. Enter the base URL of your CRM (e.g. https://crm.acme.com), the app appends /api/ itself.
Then sign in with the same options as the web app:
- Google OAuth
- Magic link (the app opens the link from the email and completes the exchange)
Tokens are stored in the device's secure storage (Keychain on iOS, Keystore on Android) and refreshed automatically.
Switching organizations
Tap the avatar in the top-right of the home screen → Switch organization. This calls the same POST /api/auth/switch-org/ endpoint the web app uses and replaces the local token pair.
Offline behaviour
The app caches recently-viewed records for offline reading but does not support offline writes. Every create/edit requires a live connection so the backend can apply tenant-scoped validation.
Push notifications
There are none, and the setup steps that used to be here described a system that does not exist:
there is no FCM_SERVER_KEY setting, no POST /api/devices/register/ endpoint, and no code in
the backend that sends a push message.
Firebase is in the app, on Android only, and it is Crashlytics for crash reporting rather than Cloud Messaging. Notifications are in-app: the CRM writes them and both clients read them when you open the app.