# Vehicle Tracking Platform

Produkcyjny szkielet systemu śledzenia pojazdów:

- `apps/api`: Express + TypeScript + PostgreSQL/PostGIS + Redis + Socket.IO + TCP listener
- `apps/web`: Next.js + Tailwind + Leaflet
- `packages/shared`: wspólne typy i helpery statusów

## Start lokalny

1. Skopiuj `.env.example` do `.env`.
2. Uruchom `docker compose up --build`.
3. Otwórz:
   - frontend: `http://localhost:3000`
   - API: `http://localhost:4000/health`
   - Nginx Proxy Manager: `http://localhost:81`

## Domyślne dane admina

- email: wartość `ADMIN_EMAIL`
- hasło: wartość `ADMIN_PASSWORD`

Admin seeduje się automatycznie przy starcie API.

## Routing pod reverse proxy

- `track.visau` -> `web:3000`
- `track.visau/api` -> `api:4000`
- `track.visau/ws` -> `api:4000/ws`

W Nginx Proxy Manager ustaw `Websockets Support` dla `/ws` i certyfikat Let's Encrypt dla hosta frontendowego.

## TCP ingest

Listener nasłuchuje na porcie `TCP_PORT` i obsługuje buforowany stream TCP, timeout, reconnect oraz odpowiedzi ACK dla ramek logowania/heartbeat. Obecny parser `trackerking` obsługuje najczęstsze ramki ASCII z IMEI i GPS używane przez urządzenia ST-90x/SinoTrack/TrackerKing, a architektura jest przygotowana do dodawania kolejnych protokołów bez zmiany core logiki.

## Główne endpointy

- `POST /auth/login`
- `GET /vehicles`
- `POST /vehicles`
- `POST /devices`
- `GET /devices/unassigned`
- `POST /telemetry`
- `GET /vehicles/:id/history`
