Bitcoin Price Tracker — это полноценное приложение, разработанное с использованием Nuxt.js (фронтенд/бэкенд), которое позволяет пользователям визуализировать исторические данные о ценах на биткоин. Приложение извлекает данные из базы данных, предоставляет интерактивный график для анализа цен и поддерживает выбор различных периодов времени.
- Функционал
- Используемые технологии
- Структура проекта
- Установка и настройка
- Использование
- API эндпоинты
- Docker Compose
- Вклад в проект
- Лицензия
- Визуализация исторических данных: Просмотр графиков изменения цены биткоина за различные периоды (1 день, 7 дней, 30 дней, 1 год) или пользовательский диапазон дат.
- Интерактивный график:
- Отображение тренда цен с аннотациями минимальных и максимальных значений.
- Подсветка роста (зелёный) или падения (красный) цены.
- Поддержка масштабирования и всплывающих подсказок для детального анализа.
- Кэширование данных:
- Данные загружаются с API Binance и кэшируются локально для ускорения доступа.
- Автоматическое обновление отсутствующих или устаревших данных.
- Пользовательский диапазон дат:
- Возможность указать собственный диапазон дат для анализа.
- Обработка ситуаций, когда данные недоступны для очень старых дат.
- Автоматическое обновление данных:
- Ежедневное автоматическое обновление данных о ценах на биткоин в 10:00 (Московское время).
- Фронтенд:
- Nuxt.js (Vue.js фреймворк)
- Chart.js для визуализации данных
- CSS для стилизации
- Бэкенд:
- Node.js с Express.js
- SQLite для хранения данных
- Axios для выполнения API запросов
- Cron для планирования задач
- Дополнительные инструменты:
- Docker для контейнеризации
- Moment.js для работы с датами
- Node-Cache для кэширования данных в памяти
bitcoin-price-tracker/
├── backend/
│ ├── index.js # Основной файл сервера
│ ├── fetchHistory.js # Логика загрузки исторических данных
│ ├── db/ # Настройки базы данных
│ │ ├── database.js # Настройка SQLite
│ │ └── btcModel.js # Модель BTCPrice
│ ├── Dockerfile # Dockerfile для бэкенда
│ └── package.json # Зависимости бэкенда
├── frontend/
│ ├── components/
│ │ └── BitcoinChart.vue # Компонент графика цен на биткоин
│ ├── pages/
│ │ └── index.vue # Главная страница
│ ├── Dockerfile # Dockerfile для фронтенда
│ ├── package.json # Зависимости фронтенда
│ └── .env # Переменные окружения для фронтенда
├── docker-compose.yml # Конфигурация Docker Compose
└── README.md # Этот файл
- Установленные Docker и Docker Compose.
- Node.js (опционально, если запуск без Docker).
-
Клонирование репозитория:
git clone https://github.com/your-repo/bitcoin-price-tracker.git cd bitcoin-price-tracker
-
Сборка и запуск с Docker:
docker-compose up --build
-
Доступ к приложению:
- Фронтенд: Откройте
http://localhost:8080
в браузере. - Бэкенд: Работает на
http://localhost:5000
.
- Фронтенд: Откройте
-
Ручная настройка (без Docker):
- Установите зависимости для фронтенда и бэкенда:
cd frontend && npm install cd ../backend && npm install
- Запустите бэкенд:
node index.js
- Запустите фронтенд:
npm run dev
- Установите зависимости для фронтенда и бэкенда:
- Выбор периода:
- Выберите один из предопределённых периодов (1 день, 7 дней, 30 дней, 1 год) или выберите "Свой период".
- Просмотр графика:
- График отображает цены на биткоин за выбранный период.
- Аннотации показывают минимальные и максимальные значения.
- Пользовательский диапазон дат:
- Введите начальную и конечную дату для анализа.
- Если данные недоступны для выбранного диапазона, появится уведомление.
-
GET
/api/btc-price
:- Получение цен на биткоин за последние
N
дней. - Параметры запроса:
days
: Количество дней (по умолчанию: 7).forceRefresh
: Принудительное обновление данных (опционально).
- Получение цен на биткоин за последние
-
GET
/api/btc-price-range
:- Получение цен на биткоин за пользовательский диапазон дат.
- Параметры запроса:
start
: Начальная дата (YYYY-MM-DD).end
: Конечная дата (YYYY-MM-DD).
Файл docker-compose.yml
определяет два сервиса:
-
Бэкенд:
- Собирается с помощью
backend/Dockerfile
. - Открытый порт:
5000
. - Использует постоянный том для SQLite.
- Собирается с помощью
-
Фронтенд:
- Собирается с помощью
frontend/Dockerfile
. - Открытый порт:
3000
(отображается как8080
на хосте). - Зависит от сервиса бэкенда.
- Собирается с помощью
Запуск приложения:
docker-compose up --build
Остановка приложения:
docker-compose down
Мы приветствуем ваши предложения и улучшения! Чтобы внести вклад:
- Создайте форк репозитория.
- Создайте новую ветку (
git checkout -b feature/your-feature
). - Зафиксируйте изменения (
git commit -m 'Добавить функционал'
). - Отправьте изменения в ветку (
git push origin feature/your-feature
). - Откройте pull request.
Этот проект распространяется под лицензией MIT. Подробности см. в файле LICENSE.
Если у вас возникнут вопросы или проблемы, пожалуйста, создайте issue на GitHub.
Этот файл README.md
содержит всю необходимую информацию о проекте, включая его функционал, структуру, инструкции по установке и использование. Вы можете скопировать этот код и добавить его в корневую директорию вашего проекта.