CryptoMonitor
Определение функциональных требований
Перед началом разработки системы мониторинга криптоактивов, я сформировал перечень требований, чтобы обеспечить максимальную информативность и удобство для пользователя.
В моем представлении, современный трекер должен не просто показывать цифры, а предоставлять контекст: динамику за 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. |

