# Geo Device Service Сервис определения геопозиции, устройства и браузера пользователя. ## Возможности - **Геолокация по IP** — offline lookup через geoip-lite (MaxMind GeoLite) - **Device** — тип (desktop/mobile/tablet), vendor, model - **Browser** — имя, версия - **OS** — операционная система и версия - **Client context** — при POST с body: screen size, timezone, language, hardwareConcurrency, deviceMemory, doNotTrack ## API ### GET /api/context Возвращает контекст на основе IP и заголовков запроса. ### POST /api/context Принимает дополнительные данные от клиента (geo из Geolocation API, размер экрана, timezone и т.д.) и объединяет с серверными данными. **Body:** ```json { "geo": { "latitude": 55.7558, "longitude": 37.6173, "city": "Moscow", "country": "Russia", "timezone": "Europe/Moscow" }, "client": { "screenWidth": 1920, "screenHeight": 1080, "viewportWidth": 1920, "viewportHeight": 969, "devicePixelRatio": 2, "timezone": "Europe/Moscow", "language": "en", "languages": ["en", "ru"], "platform": "MacIntel", "hardwareConcurrency": 8, "deviceMemory": 8, "cookieEnabled": true, "doNotTrack": null } } ``` ## Запуск ```bash npm run dev # или PORT=4002 npm start ```