Flutex uses the following connection:
The app does not connect directly to the CRM database. It requests customer data through the module installed on your server.
Mobile application
Flutter supplies the interface. Riverpod coordinates state, Dio handles API communication, and GoRouter manages navigation. Feature code lives under lib/features/; shared networking, storage, theming, and routing live under lib/core/.
The CRM installation URL is configured in lib/app/constants.dart. The networking layer adds /flutex_customer_api/v1 to build the API base URL.
Authentication and permissions
Customers authenticate with their contact email and password. The API returns an access token and a rotating refresh token. The app uses secure storage for the session and includes a bearer token with protected requests.
The server checks both contact permissions and ownership of the requested record. Changing a screen or showing a hidden menu item cannot grant access to another customer’s information.
Notifications
Firebase Cloud Messaging delivers push messages. The app registers its device token with the API; the backend uses its own Firebase service account to send messages. Firebase messaging does not replace Perfex customer authentication.
CRM records remain on your server. Firebase client configuration belongs in the app, while server credentials and licensing secrets belong only on the backend.