GeoPulse
Descripció General
GeoPulse Tracker és una aplicació de seguiment GPS desenvolupada amb Flutter que permet als usuaris seguir dispositius, comunicar-se mitjançant missatgeria i rebre actualitzacions de localització i alertes en temps real. L'aplicació ofereix interfícies tant mòbils com web, centrant-se en el seguiment en temps real, comunicació segura i alertes d'emergència.
Tecnologies Utilitzades
Frontend
- Framework: Flutter (versió SDK ^3.7.2)
- Components d'UI: Material Design
- Gestió d'estat: Patró Provider
- Renderitzat de mapes: MapLibre GL (una biblioteca de renderitzat de mapes de codi obert)
- Emmagatzematge local: SharedPreferences, SQLite (via sqflite)
- Autenticació: Implementació personalitzada amb suport biomètric
Backend
- Servidor: Node.js amb Express
- Bases de dades: MySQL (dues bases de dades - una per a dades GPS, una per a usuaris)
- Comunicació en temps real: WebSockets (paquet ws)
- Notificacions push: Firebase Cloud Messaging (FCM)
- Comunicació amb dispositius: Protocol MQTT
Funcionalitats Principals
-
Seguiment GPS en Temps Real
- Seguiment de múltiples dispositius en un mapa interactiu
- Visualització de detalls del dispositiu (velocitat, rumb, bateria, temperatura)
- Capacitats de seguiment històric
- Estils i configuracions de mapa personalitzats
-
Sistema de Missatgeria Segura
- Converses individuals
- Notificacions push per a nous missatges
- Persistència de missatges entre sessions
- Gestió de converses
-
Sistema d'Emergència SOS
- Notificacions prioritàries per a situacions d'emergència
- Compartició de localització durant emergències
- Alertes a usuaris crítics designats
-
Autenticació d'Usuaris
- Autenticació amb nom d'usuari/contrasenya
- Autenticació biomètrica (empremta digital, ID facial)
- Gestió de sessions
-
Capacitats Offline
- Emmagatzematge en caché per a ús offline
- Sincronització en segon pla
- Cua de missatges quan s'està offline
Permisos Requerits
Permisos d'Android
- Accés a Internet (
android.permission.INTERNET
)
- Estat de la xarxa (
android.permission.ACCESS_NETWORK_STATE
)
- Servei en primer pla (
android.permission.FOREGROUND_SERVICE
)
- Sincronització de dades (
android.permission.FOREGROUND_SERVICE_DATA_SYNC
)
- Wake lock (
android.permission.WAKE_LOCK
)
- Vibració (
android.permission.VIBRATE
)
- Receptor d'inici completat (
android.permission.RECEIVE_BOOT_COMPLETED
)
- Publicar notificacions (
android.permission.POST_NOTIFICATIONS
)
- Autenticació biomètrica (
android.permission.USE_BIOMETRIC
)
Permisos d'Execució
Sol·licitats mitjançant permission_handler:
- Permisos de localització
- Permisos de notificació
- Permisos d'emmagatzematge (per a caché i dades offline)
Arquitectura
Arquitectura del Client
- Pantalles: Components d'interfície organitzats per funcionalitat (mapa, missatgeria, configuració)
- Serveis: Proveïdors de funcionalitat central (notificacions, API, WebSocket, base de dades)
- Models: Estructures de dades que representen entitats de l'aplicació
- Widgets: Components d'UI reutilitzables
- Utils: Funcions d'ajuda i utilitats
Arquitectura del Servidor
- Rutes Express: Punts finals d'API per a accés a dades
- Servidor WebSocket: Canal de comunicació en temps real
- Client MQTT: Connexió a dispositius IoT
- Capa de Base de Dades: Persistència i recuperació de dades
- Integració amb Firebase: Lliurament de notificacions push
Flux de Dades
- Els dispositius GPS envien dades via MQTT al servidor
- El servidor processa les dades i les emmagatzema a la base de dades MySQL
- El servidor envia actualitzacions als clients connectats via WebSockets
- L'aplicació mòbil mostra actualitzacions i alertes en temps real
- Les interaccions de l'usuari es processen localment o es sincronitzen amb el servidor
Característiques de Seguretat
- Autenticació segura d'usuaris
- Verificació biomètrica per a operacions sensibles
- HTTPS per a comunicacions API
- Connexions WebSocket encriptades
- Mesures de seguretat de la base de dades
- Autenticació de notificacions push via Firebase
Biblioteques i Dependències Destacades
- maplibre_gl: Renderitzat de mapes de codi obert
- firebase_messaging: Notificacions push
- permission_handler: Gestió de permisos
- local_auth: Autenticació biomètrica
- sqflite: Emmagatzematge local de bases de dades
- web_socket_channel: Comunicació WebSocket
- shared_preferences: Emmagatzematge persistent de configuracions
- audioplayers: Notificacions sonores
- vibration: Retroalimentació hàptica
- http: Comunicació API
Conclusió
L'aplicació proporciona una solució completa de seguiment GPS amb capacitats de missatgeria, dissenyada per al monitoratge en temps real de dispositius amb èmfasi en la seguretat, fiabilitat i experiència d'usuari.