## Título de la vacante
**Desarrollador Backend – Protocolo GPS/Telemática (MotoSmart)**
---
## Resumen (para el encabezado/summary corto)
Buscamos un desarrollador backend para construir el motor que decodifica los datos binarios de nuestros rastreadores GPS y los transforma en información visualizable en tiempo real en nuestras plataformas web y mobile de MotoSmart.
---
## Descripción del puesto
En MotoSmart estamos construyendo un sistema de telemática GPS con seguimiento en tiempo real, gestión de instalaciones y control remoto de dispositivos. Buscamos un **Desarrollador Backend** que se encargue de la capa crítica del sistema: la comunicación directa con los rastreadores GPS instalados en los vehículos.
Serás responsable de implementar el servidor que recibe las conexiones TCP de los dispositivos, decodifica sus paquetes binarios (protocolo tipo GT06/V3) y expone esa información limpia y estructurada para que los equipos de frontend web y mobile puedan pintarla en mapas, dashboards y alertas en tiempo real.
### Responsabilidades principales
- Diseñar e implementar un servidor TCP/socket capaz de manejar miles de conexiones simultáneas de dispositivos GPS.
- Decodificar paquetes binarios en hexadecimal (login, ubicación GPS/LBS, estado, alarmas, heartbeat) según especificación de protocolo propietaria.
- Validar la integridad de cada paquete mediante checksum CRC-ITU y descartar los corruptos.
- Responder correctamente a cada dispositivo (ACK) para evitar reconexiones innecesarias o reinicios del terminal.
- Traducir los datos binarios (latitud/longitud, velocidad, curso, nivel de batería, señal GSM, estado ACC, alarmas SOS/corte de combustible/exceso de velocidad, etc.) a JSON estructurado.
- Persistir históricos de ubicación y eventos, y exponerlos vía API REST/WebSockets para consumo en tiempo real desde web y mobile.
- Implementar el envío de comandos hacia los dispositivos (corte/reconexión de combustible-electricidad, configuración remota) y procesar sus respuestas.
- Colaborar con los equipos de frontend (web y mobile) para definir contratos de API claros y eficientes.
---
## Habilidades y conocimientos requeridos
**Programación y protocolos de bajo nivel**
- Manejo sólido de un lenguaje backend (Node.js, Python, Go o Java).
- Experiencia con sockets TCP/UDP y servidores persistentes (más allá de REST tradicional).
- Manipulación de datos binarios: buffers, hexadecimal, bit masking/shifting, orden de bytes (big/little endian).
- Conocimiento o experiencia implementando validación de checksums (CRC-ITU, CRC-16 o similares).
**Backend general**
- APIs REST y/o WebSockets para datos en tiempo real.
- Bases de datos relacionales y/o time-series (PostgreSQL, MongoDB, TimescaleDB o similar) para históricos de ubicación.
- Manejo de alta concurrencia (miles de conexiones simultáneas).
- Deseable: colas de mensajería (RabbitMQ, Kafka, Redis pub/sub) para procesar picos de tráfico de dispositivos.
**Deseable / valorado**
- Experiencia previa con protocolos de rastreadores GPS (GT06, Concox, Coban, TK103, JT808 u otros protocolos de telemetría IoT).
- Conocimiento de sistemas GIS o manejo de coordenadas geográficas.
- Experiencia con arquitecturas IoT (MQTT, dispositivos embebidos).
- Experiencia integrando backend con mapas en tiempo real (Google Maps API, Mapbox, Leaflet).
- Conocimiento de Docker y despliegue en la nube (AWS, GCP o Azure).
---
## Experiencia esperada
- 2 a 3 años de experiencia como desarrollador backend.
- Experiencia comprobable en al menos un proyecto de IoT, hardware conectado o telemetría (GPS, sensores, dispositivos industriales).
- Experiencia trabajando en equipos multidisciplinarios junto a frontend web, mobile, hardware y operaciones.
---
## Qué evaluaremos en el proceso
- Capacidad de leer y decodificar manualmente un paquete de ejemplo del protocolo (estructura binaria, bit masking).
- Criterio para diseñar el manejo de reconexiones, timeouts y reinicios de dispositivos según reglas de conexión del protocolo.
- Buenas prácticas para diseñar APIs consumibles por web y mobile de forma eficiente.