add README.md

master
Иван Добринец 2025-11-17 12:55:59 +08:00
parent 7b4eb02f52
commit 2b8e142b86
1 changed files with 127 additions and 0 deletions

127
README.md Normal file
View File

@ -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) с множества аэропортов по всему миру.