App de recorridos de encomiendas (admin web + chofer Capacitor). React + Tailwind v4 + API Node. Tracking vía Tracko. Mapa OSM/Leaflet; ruteo OSRM o greedy offline.
cp .env.example .env
docker compose up -d postgres
# Postgres queda en localhost:5433 (evita chocar con un Postgres local en 5432).
# En backend/.env armá DATABASE_URL con user/password/db `comisiones` y ese puerto.
cd backend && cp ../.env.example .env # o usar backend/.env
npm install
npx prisma generate && npx prisma db push && npm run db:seed
npm run devEn otra terminal:
cd frontend && npm install && npm run devAPI: http://localhost:3001 · UI: http://localhost:5173
- Admin:
admin@comisiones.local/admin123 - Chofer:
chofer@comisiones.local/chofer123
Si Tracko corre en :8080 y Mosquitto en :1883, el backend crea el trip al iniciar el recorrido y publica GPS en trips/{tripId}/location. Sin esos servicios usa trip ids mock-… y guarda la última posición en Postgres igual.
Compose incluye un servicio opcional. Sin grafo preparado, POST /api/routes/:id/optimize ordena por vecino más cercano.
cd frontend
npx cap add android
npm run build && npx cap copyGPS funciona en el navegador (watchPosition). Sin red: Dexie outbox (complete_stop, skip_stop, gps_point) y tiles OSM cacheados (Recorridos → Cachear mapa).