add README.md
parent
7b4eb02f52
commit
2b8e142b86
|
|
@ -0,0 +1,127 @@
|
|||
# Анализатор 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) с множества аэропортов по всему миру.
|
||||
Loading…
Reference in New Issue