CryptoMonitor
Определение функциональных требований# Перед началом разработки системы мониторинга криптоактивов, я сформировал перечень требований, чтобы обеспечить максимальную информативность и удобство для пользователя.
В моем представлении, современный трекер должен не просто показывать цифры, а предоставлять контекст: динамику за 24 часа, общую капитализацию рынка и детальную аналитику по каждому активу.
Реестр функциональных и нефункциональных требований:
Мониторинг цен: Отображение актуальных курсов топ-50 криптовалют. Фильтрация и сортировка: Возможность быстрого поиска "Лидеров роста" и "Лидеров падения". Глобальная аналитика: Показ доминации BTC/ETH и общей капитализации рынка в реальном времени. Детальный разбор: Модальное окно с описанием актива и графиком изменения цены (Sparkline). Автообновление: Система должна автоматически синхронизировать данные каждые 20 секунд без перезагрузки страницы.
Получение API и конфигурация проекта Для работы приложения требуется доступ к агрегатору данных. Я выбрал CoinGecko API, так как он предоставляет один из самых полных наборов данных бесплатно (Demo-план).
Процесс получения ключа:
Регистрация на CoinGecko Developer Dashboard. Создание нового API Key (Demo). Сохранение ключа в конфигурационный файл. Структура окружения (.env): Ключи и настройки хранятся отдельно от кода для безопасности:
env COINGECKO_API_KEY="твой_ключ" DEBUG=True Разработка приложения 1. Управление зависимостями Для стабильной работы бэкенда на Python был создан файл зависимостей.
requirements.txt:
text fastapi uvicorn requests python-dotenv 2. Архитектура Backend (Python + FastAPI) Бэкенд разделен на два основных модуля:
api_client.py: Логика взаимодействия с внешним API, механизм кэширования для снижения нагрузки на лимиты. main.py: RESTful API сервис на базе FastAPI, обслуживающий запросы фронтенда. Пример реализации кэширования в api_client.py:
python 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: Адаптация под мобильные устройства и планшеты. Тестирование и запуск Запуск проекта осуществляется через терминал:
bash python main.py После запуска сервер становится доступен по адресу http://localhost:8000. Приложение сразу начинает цикл обновления данных:
Главная страница: Показ сетки карточек с ценами. Индикатор обновления: Таймер в шапке отсчитывает время до следующей синхронизации. Аналитика: При клике на карточку открывается окно с подробным описанием монеты на русском языке. Методические материалы Понятие Описание FastAPI Современный, быстрый (высокопроизводительный) веб-фреймворк для создания API на Python 3.8+. CoinGecko API Программный интерфейс, предоставляющий доступ к фундаментальным данным рынка криптовалют. Vanilla JavaScript Чистый JavaScript без использования сторонних фреймворков (таких как React или Vue). Sparkline Небольшой, упрощенный график, показывающий общую динамику изменения показателя во времени. REST API Архитектурный стиль взаимодействия компонентов, использующий протокол HTTP.
