Mobile app¶
Vesana has an Android app for on the go. iOS is currently unavailable.
Install¶
The APK lives at /downloads of the Vesana instance. Users:
- Open browser on mobile,
https://your-domain.tld/downloads - Download APK (
vesana.apk, ~30 MB) - Allow install from unknown source (Android system setting)
- Open APK, install
Alternative: distribute via MDM (Intune, MobileIron, etc.) — APK is in the bundle.
Server pairing¶
On first start:
- Enter server URL (
https://your-domain.tld) - Email + password + 2FA code (if active)
Token stored in AsyncStorage. On logout: token gone.
Screens¶
| Screen | What you do there |
|---|---|
| Dashboard | Status summary + tenant overview |
| Hosts | List by tenant, search, status sort |
| Host detail | Service status, ACK, quick downtime, bottom sheet for actions |
| Problems | Error overview with filter (tenant, status), ACK/DT toggles |
| Notifications | Local push history, unread badge |
| Downtimes | Active downtimes, new via modal with host search |
| Settings | Theme (dark/light), language (DE/EN), disconnect server |
| Profile | User info, role, permissions, logout |
Push notifications¶
Prerequisite: Firebase configured. See Push notifications.
When active:
- Per registered device: token in
push_tokenstable - Severity filter per channel
- User targeting possible (channel sends only to selected users)
- Tap on notification → deep link to host detail
- Local store: max 100 notifications in AsyncStorage
Deep links¶
App registers for vesana:// deep links and the server domain.
Examples:
| URL | Effect |
|---|---|
vesana://hosts/<id> |
Host detail |
vesana://problems |
Problem list |
https://your-domain.tld/hosts/<id> |
when mobile app installed: open in app, otherwise browser |
On push tap, the app uses host_id from the notification payload.
Dark / light¶
20 themes synced with web app. Theme switch per user in app settings — pulled from server as user pref on login.
Offline behavior¶
App caches the last view. On lost connection:
- Dashboard shows last known data
- Pull-to-refresh retries
- Notifications still arrive (FCM is independent)
- ACK / downtime can be tapped offline, sync on reconnect
Logout vs. disconnect¶
| Action | Effect |
|---|---|
| Logout | Token gone, server stays configured |
| Disconnect server | Token gone + server URL gone |
Logout for quick user switch. Disconnect for demo switch or MDM reset.
Update the app¶
The app doesn't auto-update (no Play Store distribution). Update path:
- Pull new APK from
/downloads - Install over the existing one
Data persists.
Privacy¶
App sends:
- Push token (to server, stored with user binding)
- Own login + password + 2FA to server
App does not send:
- Data to third parties
- Contact list
- Location
Next¶
- Push notifications — Firebase setup
- Notification channels — user targeting