# Анализатор METAR > Веб-приложение для получения, анализа и визуализации метеорологических сводок METAR с метеостанций аэропортов по всему миру. ## О проекте Этот проект представляет собой простой, но функциональный инструмент для метео-энтузиастов и пилотов. Пользователь может ввести ICAO-код аэропорта и глубину анализа в днях, после чего приложение запрашивает данные у публичного API, обрабатывает их и представляет в виде наглядных графиков и сводной аналитики. ## Основные возможности - **Получение данных:** Запрос исторических данных METAR по коду станции и периоду. - **Визуализация:** Построение графиков для ключевых метеорологических параметров: - Температура и точка росы. - Атмосферное давление (QNH). - Скорость ветра. - **Сводный анализ:** Расчет минимальных, максимальных и средних значений, а также определение преобладающего направления ветра. - **Просмотр исходных данных:** Таблица с последними полученными сводками METAR. - **Адаптивный интерфейс:** Корректное отображение на устройствах разного размера. ## Стек технологий - **Backend:** [Node.js](https://nodejs.org/), [Express.js](https://expressjs.com/) - **Frontend:** HTML5, CSS3, Vanilla JavaScript (ES6+) - **HTTP-клиент:** [Axios](https://axios-http.com/) - **Библиотека для графиков:** [Chart.js](https://www.chartjs.org/) - **Контейнеризация:** [Docker](https://www.docker.com/) --- ## Установка и запуск Вы можете запустить проект двумя способами: локально для разработки или с помощью Docker. ### 1. Локальный запуск (для разработки) **Требования:** - [Node.js](https://nodejs.org/) (v18 или выше) - npm (обычно устанавливается вместе с Node.js) **Шаги:** 1. Клонируйте репозиторий: ```bash git clone https://gitea.yourcompany.com/your-username/metar-analyzer.git ``` 2. Перейдите в директорию проекта: ```bash cd metar-analyzer ``` 3. Установите зависимости: ```bash npm install ``` 4. Запустите сервер: ```bash npm start ``` 5. Откройте в браузере [http://localhost:3000](http://localhost:3000). ### 2. Запуск через Docker **Требования:** - [Docker](https://www.docker.com/get-started) - [Docker Compose](https://docs.docker.com/compose/install/) **Шаги:** 1. Клонируйте репозиторий (если еще не сделали). 2. Находясь в корневой папке проекта, выполните команду: ```bash docker-compose up --build -d ``` - `--build` - принудительно пересобирает образ, если были изменения в коде или `Dockerfile`. - `-d` - запускает контейнер в фоновом режиме (detached mode). 3. Приложение будет доступно по адресу [http://localhost:9010](http://localhost:9010). ## Развертывание (Deployment) Проект готов к развертыванию с помощью Portainer (или любой другой системы управления Docker-контейнерами). 1. В Portainer создайте новый **Stack**. 2. Выберите метод развертывания из **Git Repository**. 3. Укажите URL вашего репозитория в Gitea и данные для аутентификации (если репозиторий приватный). 4. В качестве `Compose path` укажите `docker-compose.yml`. 5. Нажмите **Deploy the stack**. Portainer автоматически скачает код, соберет образ и запустит контейнер. ## API Проект предоставляет один API-эндпоинт для получения данных с фронтенда. - **URL:** `/api/metar` - **Метод:** `GET` - **Query-параметры:** - `station` (string, **обязательный**) - ICAO-код аэропорта (например, `UIII`). - `days` (number, **обязательный**) - Глубина выборки в днях (например, `14`). - **Пример запроса:** `/api/metar?station=UIII&days=14` - **Ответ в случае успеха (200 OK):** ```json { "data": [ { "station": "UIII", "valid": "2023-11-28T12:30:00Z", "tmpf": 3.2, "dwpf": -4, //* ... другие поля ... */ } ] } ``` - **Ответ в случае ошибки (4xx/5xx):** ```json { "error": "Текст ошибки" } ``` ## Источник данных Источником данных является публичный архив [Iowa Environmental Mesonet (IEM)](https://mesonet.agron.iastate.edu/), поддерживаемый Университетом штата Айова. Сервис агрегирует и предоставляет через API метеорологические сводки (METAR) с множества аэропортов по всему миру.