Below is the complete end-to-end flow for adding one Track Vehicle button in the Motoshare Flutter app and opening Traccar tracking with Motoshare authentication.
End-to-End Flow: Motoshare App to Traccar Tracking
1. Main Requirement
In the Motoshare Flutter app, add one button:
Track Vehicle
When user clicks this button:
Motoshare Flutter App
↓
Track Vehicle Button
↓
Open Traccar Manager App / gps.motoshare.in
↓
Motoshare OAuth / OpenID Authentication
↓
Traccar Dashboard Opens
↓
User tracks allowed vehicles
2. Final Architecture
Flutter App
↓
Laravel Backend
↓
Traccar Server
↓
gps.motoshare.in
↓
Traccar Manager App / Web Dashboard
Simple meaning:
Flutter App = Button and user action
Laravel = Authentication and Traccar device/user mapping
Traccar = GPS tracking system
Physical GPS Tracker = Sends vehicle location
3. Vehicle Registration Flow
When vehicle is added in Motoshare:
User adds vehicle in Motoshare app
↓
User enters vehicle details + GPS IMEI
↓
Flutter sends data to Laravel backend
↓
Laravel saves vehicle in Motoshare database
↓
Laravel creates device in Traccar using Traccar API
↓
Laravel saves Traccar Device ID in vehicle table
Example vehicle data:
Vehicle Name: Honda Activa
Vehicle Number: JH05 AB 1234
GPS IMEI: 864895060123456
In Traccar, device should be created like:
Device Name: Honda Activa - JH05 AB 1234
Unique ID: 864895060123456
Important:
Unique ID = GPS tracker IMEI
4. Physical GPS Tracker Flow
Live tracking will work only when physical GPS tracker sends data to Traccar.
Physical GPS tracker installed in vehicle
↓
SIM card inserted in GPS tracker
↓
Tracker configured with APN + gps.motoshare.in + correct port
↓
Tracker sends live location to gps.motoshare.in
↓
Vehicle becomes online in Traccar
Example tracker setting:
Server: gps.motoshare.in
Port: 5023 or correct device protocol port
APN: airtelgprs.com / jionet / www
Important:
8082 = Traccar web/API port
5023 or other protocol port = GPS tracker data port
5. Track Vehicle Button Flow in Flutter
Simple Button Flow
User opens Motoshare Flutter app
↓
Clicks Track Vehicle
↓
App opens Traccar Manager App or gps.motoshare.in
↓
Traccar checks login session
↓
If user is already authenticated, dashboard opens
↓
If user is not authenticated, Motoshare login opens
↓
After login, user returns to Traccar dashboard
6. Authentication Flow
Your desired authentication flow:
Traccar Login
↓
Motoshare OAuth / OpenID Authentication
↓
Traccar Dashboard
Yes, it can automatically authenticate and go to dashboard if SSO/OpenID is configured properly.
Case 1: User already has active Motoshare session
Click Track Vehicle
↓
Open gps.motoshare.in / Traccar Manager
↓
Motoshare session found
↓
Auto authentication
↓
Traccar dashboard opens
Case 2: User does not have active Motoshare session
Click Track Vehicle
↓
Open gps.motoshare.in / Traccar Manager
↓
Redirect to Motoshare login
↓
User enters login details
↓
Redirect back to Traccar
↓
Dashboard opens
So first-time login may be required. After login/session is saved, it can open dashboard directly next time.
7. Required Traccar OpenID Configuration
Your Traccar config should have Motoshare OAuth/OpenID enabled.
Example:
<entry key='web.url'>https://gps.motoshare.in</entry>
<entry key='web.port'>8082</entry>
<entry key='openid.force'>true</entry>
<entry key='openid.issuerUrl'>https://motoshare.in</entry>
<entry key='openid.authUrl'>https://motoshare.in/oauth/authorize</entry>
<entry key='openid.tokenUrl'>https://motoshare.in/oauth/token</entry>
<entry key='openid.userInfoUrl'>https://motoshare.in/api/user</entry>
This means:
Traccar login will use Motoshare authentication.
8. Required Redirect URLs
In Laravel OAuth/OpenID client settings, allow these callback URLs:
https://gps.motoshare.in/api/session/openid/callback
For Traccar Manager mobile app, also allow:
org.traccar.manager:/api/session/openid/callback
These are required so login can return back to Traccar after Motoshare authentication.
9. Flutter App Button Options
Option A: Easiest and Most Reliable
Open web dashboard:
https://gps.motoshare.in
Flow:
Track Vehicle Button
↓
Open https://gps.motoshare.in
↓
Motoshare SSO login
↓
Traccar dashboard opens
This is simplest and needs minimum coding.
Option B: Open Traccar Manager App
Flow:
Track Vehicle Button
↓
Open Traccar Manager App
↓
Server URL: https://gps.motoshare.in
↓
Motoshare SSO login
↓
Traccar dashboard opens
Important:
First time, user may need to set server URL in Traccar Manager:
https://gps.motoshare.in
10. Flutter Button Code: Simple Web Dashboard
Use this for fastest implementation:
import 'package:url_launcher/url_launcher.dart';
Future<void> openGpsTracking() async {
final Uri url = Uri.parse('https://gps.motoshare.in');
await launchUrl(
url,
mode: LaunchMode.externalApplication,
);
}
Button:
ElevatedButton(
onPressed: openGpsTracking,
child: const Text('Track Vehicle'),
)
11. Flutter Button Code: Open Traccar Manager App
Android package:
org.traccar.manager
Flutter dependencies:
dependencies:
url_launcher: ^6.3.0
android_intent_plus: ^5.0.2
Code:
import 'package:android_intent_plus/android_intent.dart';
import 'package:url_launcher/url_launcher.dart';
Future<void> openTraccarManager() async {
const String packageName = 'org.traccar.manager';
try {
final intent = AndroidIntent(
action: 'android.intent.action.MAIN',
package: packageName,
category: 'android.intent.category.LAUNCHER',
);
await intent.launch();
} catch (e) {
final Uri playStoreUrl = Uri.parse(
'https://play.google.com/store/apps/details?id=$packageName',
);
await launchUrl(
playStoreUrl,
mode: LaunchMode.externalApplication,
);
}
}
Button:
ElevatedButton(
onPressed: openTraccarManager,
child: const Text('Track Vehicle'),
)
12. Laravel Backend Responsibilities
Laravel should handle:
1. Vehicle save
2. GPS IMEI save
3. Traccar device creation
4. Traccar Device ID save
5. User mapping with Traccar
6. Device permission assignment
Vehicle table should store:
gps_imei
traccar_device_id
gps_enabled
gps_status
13. Permission Flow
Authentication only logs the user into Traccar.
Vehicle visibility depends on Traccar permissions.
Recommended:
Admin:
Can see all vehicles.
Partner:
Can see only own vehicles.
Renter:
Can see vehicle only during active booking, if required later.
Example:
Partner adds vehicle
↓
Laravel creates device in Traccar
↓
Laravel maps partner user in Traccar
↓
Laravel assigns device to partner user
↓
Partner opens Traccar Manager
↓
Partner sees only assigned vehicle
14. Complete Final Flow
1. Physical GPS tracker is installed in vehicle.
2. SIM card is inserted in GPS tracker.
3. GPS tracker is configured with:
- APN
- gps.motoshare.in
- correct GPS protocol port
4. Vehicle is added in Motoshare Flutter app with GPS IMEI.
5. Flutter sends vehicle details to Laravel backend.
6. Laravel saves vehicle in Motoshare database.
7. Laravel creates device in Traccar using IMEI as Unique ID.
8. Laravel stores Traccar Device ID.
9. Laravel assigns vehicle/device permission to correct user.
10. User clicks Track Vehicle button in Flutter app.
11. App opens Traccar Manager App or https://gps.motoshare.in.
12. Traccar redirects to Motoshare OAuth/OpenID login.
13. If user session exists, authentication happens automatically.
If not, user logs in once.
14. After successful login, user is redirected to Traccar dashboard.
15. User sees only allowed vehicles.
16. Live location appears because physical GPS tracker is sending data to gps.motoshare.in.
15. Final Simple Summary
Motoshare Flutter App:
Add Track Vehicle button.
Button Action:
Open Traccar Manager App or https://gps.motoshare.in.
Authentication:
Traccar uses Motoshare OAuth/OpenID.
Backend:
Laravel creates Traccar device and assigns user permission.
Tracking:
Physical GPS tracker sends live location to gps.motoshare.in.
Result:
User clicks Track Vehicle → auto/login with Motoshare → Traccar dashboard opens → vehicle tracking visible.
Top comments (0)