CryptoMonitor: различия между версиями
Новая страница: «Определение функциональных требований# Перед началом разработки системы мониторинга криптоактивов, я сформировал перечень требований, чтобы обеспечить максимальную информативность и удобство для пользователя. В моем представлении, современный тр...» |
Нет описания правки |
||
| Строка 1: | Строка 1: | ||
Определение функциональных требований | == Определение функциональных требований == | ||
Перед началом разработки системы мониторинга криптоактивов, я сформировал перечень требований, чтобы обеспечить максимальную информативность и удобство для пользователя. | Перед началом разработки системы мониторинга криптоактивов, я сформировал перечень требований, чтобы обеспечить максимальную информативность и удобство для пользователя. | ||
В моем представлении, современный трекер должен не просто показывать цифры, а предоставлять контекст: динамику за 24 часа, общую капитализацию рынка и детальную аналитику по каждому активу. | В моем представлении, современный трекер должен не просто показывать цифры, а предоставлять контекст: динамику за 24 часа, общую капитализацию рынка и детальную аналитику по каждому активу. | ||
Реестр функциональных и нефункциональных требований: | '''Реестр функциональных и нефункциональных требований:''' | ||
* '''Мониторинг цен''': Отображение актуальных курсов топ-50 криптовалют. | |||
* '''Фильтрация и сортировка''': Возможность быстрого поиска "Лидеров роста" и "Лидеров падения". | |||
* '''Глобальная аналитика''': Показ доминации BTC/ETH и общей капитализации рынка в реальном времени. | |||
* '''Детальный разбор''': Модальное окно с описанием актива и графиком изменения цены (Sparkline). | |||
* '''Автообновление''': Система должна автоматически синхронизировать данные каждые 20 секунд без перезагрузки страницы. | |||
== Получение API и конфигурация проекта == | |||
Для работы приложения требуется доступ к агрегатору данных. Я выбрал '''CoinGecko API''', так как он предоставляет один из самых полных наборов данных бесплатно (Demo-план). | |||
'''Процесс получения ключа:''' | |||
# Регистрация на CoinGecko Developer Dashboard. | |||
# Создание нового API Key (Demo). | |||
# Сохранение ключа в конфигурационный файл. | |||
'''Структура окружения (.env):''' | |||
Ключи и настройки хранятся отдельно от кода для безопасности: | |||
<pre> | |||
COINGECKO_API_KEY="твой_ключ" | |||
DEBUG=True | |||
</pre> | |||
== Разработка приложения == | |||
=== 1. Управление зависимостями === | |||
1. Управление зависимостями | |||
Для стабильной работы бэкенда на Python был создан файл зависимостей. | Для стабильной работы бэкенда на Python был создан файл зависимостей. | ||
requirements.txt: | '''requirements.txt:''' | ||
<pre> | |||
fastapi | fastapi | ||
uvicorn | uvicorn | ||
requests | requests | ||
python-dotenv | python-dotenv | ||
2. Архитектура Backend (Python + FastAPI) | </pre> | ||
=== 2. Архитектура Backend (Python + FastAPI) === | |||
Бэкенд разделен на два основных модуля: | Бэкенд разделен на два основных модуля: | ||
* '''api_client.py''': Логика взаимодействия с внешним API, механизм кэширования для снижения нагрузки на лимиты. | |||
* '''main.py''': RESTful API сервис на базе FastAPI, обслуживающий запросы фронтенда. | |||
'''Пример реализации кэширования в api_client.py:''' | |||
<pre> | |||
Пример реализации кэширования в api_client.py: | |||
cache = { | cache = { | ||
'prices': {'data': None, 'timestamp': 0}, | 'prices': {'data': None, 'timestamp': 0}, | ||
| Строка 49: | Строка 51: | ||
} | } | ||
_CACHE_EXPIRE = 60 # Кэш на 60 секунд | _CACHE_EXPIRE = 60 # Кэш на 60 секунд | ||
3. Разработка Frontend (Vanilla JS + CSS) | </pre> | ||
=== 3. Разработка Frontend (Vanilla JS + CSS) === | |||
Интерфейс выполнен в современном стиле с использованием "стеклянного" дизайна (glassmorphism) и плавных анимаций. | Интерфейс выполнен в современном стиле с использованием "стеклянного" дизайна (glassmorphism) и плавных анимаций. | ||
Ключевые особенности UI: | '''Ключевые особенности UI:''' | ||
* '''Lucide Icons''': Использование векторных иконок для визуализации трендов. | |||
* '''SVG Charts''': Динамическая генерация графиков изменения цены за 7 дней прямо в браузере. | |||
* '''Responsive Design''': Адаптация под мобильные устройства и планшеты. | |||
== Тестирование и запуск == | |||
Тестирование и запуск | |||
Запуск проекта осуществляется через терминал: | Запуск проекта осуществляется через терминал: | ||
<pre> | |||
python main.py | python main.py | ||
</pre> | |||
[[Файл:Запуск скрипта.png|мини]] | |||
После запуска сервер становится доступен по адресу http://localhost:8000. Приложение сразу начинает цикл обновления данных: | После запуска сервер становится доступен по адресу http://localhost:8000. Приложение сразу начинает цикл обновления данных: | ||
# '''Главная страница''': Показ сетки карточек с ценами. | |||
# '''Индикатор обновления''': Таймер в шапке отсчитывает время до следующей синхронизации. | |||
# '''Аналитика''': При клике на карточку открывается окно с подробным описанием монеты на русском языке. | |||
[[Файл:Интерфейс.png|мини]] | |||
== Методические материалы == | |||
{| class="wikitable" | |||
! Понятие !! Описание | |||
|- | |||
| '''FastAPI''' || Современный, быстрый (высокопроизводительный) веб-фреймворк для создания API. | |||
Понятие Описание | |- | ||
FastAPI Современный, быстрый (высокопроизводительный) веб-фреймворк для создания API | | '''CoinGecko API''' || Программный интерфейс, предоставляющий доступ к данным рынка криптовалют. | ||
CoinGecko API Программный интерфейс, предоставляющий доступ к | |- | ||
Vanilla JavaScript Чистый JavaScript без использования сторонних фреймворков | | '''Vanilla JavaScript''' || Чистый JavaScript без использования сторонних фреймворков. | ||
Sparkline Небольшой | |- | ||
REST API Архитектурный стиль взаимодействия компонентов | | '''Sparkline''' || Небольшой график, показывающий общую динамику изменения во времени. | ||
|- | |||
| '''REST API''' || Архитектурный стиль взаимодействия компонентов по протоколу HTTP. | |||
|} | |||
Версия от 20:55, 19 марта 2026
Определение функциональных требований
Перед началом разработки системы мониторинга криптоактивов, я сформировал перечень требований, чтобы обеспечить максимальную информативность и удобство для пользователя.
В моем представлении, современный трекер должен не просто показывать цифры, а предоставлять контекст: динамику за 24 часа, общую капитализацию рынка и детальную аналитику по каждому активу.
Реестр функциональных и нефункциональных требований:
- Мониторинг цен: Отображение актуальных курсов топ-50 криптовалют.
- Фильтрация и сортировка: Возможность быстрого поиска "Лидеров роста" и "Лидеров падения".
- Глобальная аналитика: Показ доминации BTC/ETH и общей капитализации рынка в реальном времени.
- Детальный разбор: Модальное окно с описанием актива и графиком изменения цены (Sparkline).
- Автообновление: Система должна автоматически синхронизировать данные каждые 20 секунд без перезагрузки страницы.
Получение API и конфигурация проекта
Для работы приложения требуется доступ к агрегатору данных. Я выбрал CoinGecko API, так как он предоставляет один из самых полных наборов данных бесплатно (Demo-план).
Процесс получения ключа:
- Регистрация на CoinGecko Developer Dashboard.
- Создание нового API Key (Demo).
- Сохранение ключа в конфигурационный файл.
Структура окружения (.env): Ключи и настройки хранятся отдельно от кода для безопасности:
COINGECKO_API_KEY="твой_ключ" DEBUG=True
Разработка приложения
1. Управление зависимостями
Для стабильной работы бэкенда на Python был создан файл зависимостей.
requirements.txt:
fastapi uvicorn requests python-dotenv
2. Архитектура Backend (Python + FastAPI)
Бэкенд разделен на два основных модуля:
- api_client.py: Логика взаимодействия с внешним API, механизм кэширования для снижения нагрузки на лимиты.
- main.py: RESTful API сервис на базе FastAPI, обслуживающий запросы фронтенда.
Пример реализации кэширования в api_client.py:
cache = {
'prices': {'data': None, 'timestamp': 0},
'global': {'data': None, 'timestamp': 0}
}
_CACHE_EXPIRE = 60 # Кэш на 60 секунд
3. Разработка Frontend (Vanilla JS + CSS)
Интерфейс выполнен в современном стиле с использованием "стеклянного" дизайна (glassmorphism) и плавных анимаций.
Ключевые особенности UI:
- Lucide Icons: Использование векторных иконок для визуализации трендов.
- SVG Charts: Динамическая генерация графиков изменения цены за 7 дней прямо в браузере.
- Responsive Design: Адаптация под мобильные устройства и планшеты.
Тестирование и запуск
Запуск проекта осуществляется через терминал:
python main.py

После запуска сервер становится доступен по адресу http://localhost:8000. Приложение сразу начинает цикл обновления данных:
- Главная страница: Показ сетки карточек с ценами.
- Индикатор обновления: Таймер в шапке отсчитывает время до следующей синхронизации.
- Аналитика: При клике на карточку открывается окно с подробным описанием монеты на русском языке.

Методические материалы
| Понятие | Описание |
|---|---|
| FastAPI | Современный, быстрый (высокопроизводительный) веб-фреймворк для создания API. |
| CoinGecko API | Программный интерфейс, предоставляющий доступ к данным рынка криптовалют. |
| Vanilla JavaScript | Чистый JavaScript без использования сторонних фреймворков. |
| Sparkline | Небольшой график, показывающий общую динамику изменения во времени. |
| REST API | Архитектурный стиль взаимодействия компонентов по протоколу HTTP. |
