{"id":24959036,"url":"https://github.com/waliot/share-client","last_synced_at":"2026-01-08T02:03:37.593Z","repository":{"id":120645731,"uuid":"458671130","full_name":"waliot/share-client","owner":"waliot","description":"Реализация приложения «Waliot Share Client» на разных JS фреймворках 🪤","archived":false,"fork":false,"pushed_at":"2023-09-28T11:28:19.000Z","size":1324,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-02-03T07:45:59.974Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://share.waliot.com","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/waliot.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-02-13T00:18:52.000Z","updated_at":"2023-09-28T11:33:03.000Z","dependencies_parsed_at":null,"dependency_job_id":"2a25ad35-ed06-47d8-a563-9097e1f0f64d","html_url":"https://github.com/waliot/share-client","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/waliot%2Fshare-client","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/waliot%2Fshare-client/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/waliot%2Fshare-client/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/waliot%2Fshare-client/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/waliot","download_url":"https://codeload.github.com/waliot/share-client/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246100581,"owners_count":20723479,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-02-03T07:46:01.144Z","updated_at":"2026-01-08T02:03:32.548Z","avatar_url":"https://github.com/waliot.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Waliot Share Client\n\nРепозиторий с реализацией одного и того же приложения на разных фреймфорках.\n\n![Дизайн приложения](assets/waliot-share-client-preview.png)\n\n[Дизайн приложения в Figma](https://www.figma.com/file/jJKeAQAErwnU9eoye9D2mM/WaliotShareClient?node-id=0%3A1)\n\n## Техническое задание\n\n### Описание\n\nПользователь получает ссылку, открыв которую может следить за объектом. \nВ приложении на карте отображается текущее местоположение объекта мониторинга, а так же его доп. данные: статус, рег. номер и тд.\n\n### Требования\n\n- Всегда держать объект в центре экрана, если пользователь отодвинул карту, то при обновлении данных вернуть его обратно в центр.\n\n- Данные обновляются **каждые 15 секунд** путем интервального создания запросов по пути `https://api.waliot.com/api/states/share/tracking-objects/:token` - где параметр `token`,\nуникальная строка, позволяющая получить данные по конкретному объекту.\n\n  Возвращаемая модель имеет вид:\n  ```typescript\n  interface ShareTrackingObject {\n    /**\n     * Направление движения в градусах относительно севера по часовой стрелке,\n     * от 0 до 360 градусов\n     */\n    course: number\n  \n    /**\n     * Широта, в десятичной форме\n     */\n    latitude: number\n  \n    /**\n     * Долгота, в десятичной форме\n     */\n    longitude: number\n  \n    /**\n     * Модель объекта мониторинга\n     */\n    model: string\n  \n    /**\n     * Регистрационный номер объекта мониторинга\n     */\n    regNumber: string\n  \n    /**\n     * Текущая скорость, км/ч\n     */\n    speed: number\n  \n    /**\n     * Время начала текущего состояния\n     * из поля {@link ShareTrackingObject#stateType}, в ISO8601\n     */\n    stateStart: string\n  \n    /**\n     * Тип текущего состояния\n     */\n    stateType: \"OFFLINE\" | \"ONLINE\" | \"PARKING\" | \"STOP\" | \"LOW_SPEED\" | \"NORMAL_SPEED\" | \"OVER_SPEED\"\n  \n    /**\n     * Идентификатор объекта мониторинга\n     */\n    trackingObjectId: number\n  }\n  ```\n\n  Поле «Модель» должно отображаться всегда, логика остальных полей, указана ниже на схеме:\n\n  ![](assets/object-card-with-description.png)\n\n- В заголовках запроса нужно передавать название приложения и его версию:\n  \n  ```text\n  X-Waliot-App-Name: SHARE_CLIENT_ON_SVELTE\n  X-Waliot-App-Version: 1.2.3\n  ```\n\n- Токен доступа, должен быть указан в URL-е приложения. В случае его отсутсвия, приложение выводит диалог об его отсутсвии\n  \n- Если запрос упал, то нужно вывести диалог об ошибке. В случае ошибки с кодом 404 вывести сообщение \"Токен не найден\", если 403, то \"Токен истёк\"\n  \n- Так же вместе с запросом на получение данных, после него нужно сделать запрос на геокодер OpenStreeMap для получения человеко-читаемого адресса. Для его получения используется [OpenStreetMap API](https://nominatim.openstreetmap.org/ui/reverse.html).\n\n  API запрос делается по пути `https://nominatim.openstreetmap.org/reverse` и передаются следующие query-параметры:\n\n  ```text\n  lat=45.989\n  lon=45.989\n  zoom=100\n  addressdetails=1\n  accept-language=ru\n  format=json\n  ```\n\n  Описание параметров и то что они значат вы можете найти в [документации](https://nominatim.org/release-docs/develop/api/Reverse/). Возвращаются данные вида:\n\n  ```typescript\n  interface GeocoderAddress {\n    building?: string\n    house?: string\n    public_building?: string\n    city?: string\n    street?: string\n    street_number?: string\n    village?: string\n    town?: string\n    city_district?: string\n    country?: string\n    country_code?: string\n    county?: string\n    house_number?: string\n    postcode?: string\n    region?: string\n    road?: string\n    state?: string\n  }\n\n  interface GeocoderResponse {\n    address: GeocoderAddress\n    boundingbox: string[]\n    display_name: string\n    lat: string\n    lon: string\n    licence: string\n    osm_id: number\n    osm_type: string\n    place_id: number\n  }\n  ```\n  \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwaliot%2Fshare-client","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwaliot%2Fshare-client","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwaliot%2Fshare-client/lists"}