5a483da01d0ef9dd64e61400e288c187f9cc48ab
Adds the Flutter inventory app source, cleaned up for a shared repo: generic package name, no hardcoded ERP endpoints (moved to gitignored local config), no dead auth code, no debug logging of session data.
Inventory App
A Flutter mobile app for conducting physical stock inventories against an Axelor ERP backend. Warehouse staff scan product QR codes, count stock by zone, and submit inventory lines directly to Axelor's REST API.
Features
- Login against the Axelor ERP using session-cookie authentication, with the session persisted locally and re-validated on app start.
- Inventory counting — scan a product QR code, pick a zone/stock location, choose a counting type (
Comptage 1,Comptage Contrôle), enter a quantity and condition, and submit the count as anInventoryLine. - Zone scanning — scan a location QR code to auto-select the stock location for the current count.
- Product creation — create a new product on the fly (name, family/sub-family, serial number, condition) with an initial inventory line, including a picture upload flow.
- My Scans — review the inventory lines the current user has already submitted.
- Bureau inventory — a dedicated search/review screen for inventory lines at a given location.
- Panoramic viewer — 360° image viewer tab.
- Profile — view the logged-in user's Axelor profile and log out.
- Light/dark theme support.
Tech stack
- Flutter / Dart
- GetX for state management, routing, and dependency injection
- Dio + cookie_jar for HTTP calls and session-cookie handling against Axelor's REST API
- get_storage for local session persistence
- qr_code_scanner_plus for QR scanning
- image_picker for product photo capture/upload
Project structure
lib/
controllers/ # GetX controllers (home, user, theme, simple UI state)
models/ # Axelor entity DTOs (Product, Depot, InventoryLine, TrackingNumber, ...)
service/ # AxelorClient (REST API) and product image upload flow
views/ # Screens (login, home, QR scanner, product view, profile, ...)
widgets/ # Shared glassmorphism-style UI components
utils.dart # Local, gitignored config (Axelor endpoints) — see Setup below
constants.dart # App-wide constants and text styles
Setup
Prerequisites
- Flutter SDK (Dart SDK
^3.7.2, seepubspec.yaml) - Access to an Axelor ERP instance to point the app at
1. Install dependencies
flutter pub get
2. Configure the Axelor endpoint (required — the app will not build without this)
Two files hold real, environment-specific values and are gitignored so they never get committed. Copy each template and fill in your own values:
cp lib/utils.example.dart lib/utils.dart
cp android/app/src/main/res/xml/network_security_config.xml.example android/app/src/main/res/xml/network_security_config.xml
lib/utils.dart— setsUtils.url(the Axelor base URL, e.g.https://your-erp-host.example.com/prod) andUtils.ticketUrl(an external ticketing link opened from the drawer).android/.../network_security_config.xml— Android's cleartext-traffic domain allowlist. Set the<domain>entry to match the host inUtils.url(only needed if your ERP is served over plain HTTP; otherwise this can be left with a dummy value).
3. Run the app
flutter run
Notes
- The inventory ID targeted by counts is hardcoded in
lib/constants.dart(kInventoryId) — update it to match the active inventory in your Axelor instance. - Session cookies are persisted via
get_storageand validated against Axelor on each app start; an invalid/expired session bounces the user back to the login screen.
Description
Languages
Dart
99.5%
Swift
0.4%