Service which collects posts from VK (using VK API), caches recent data with InfiniSpan, provides analytical insights
Репозиторий организован по принципу «монорепозитория» и содержит три основных микросервиса, а также общий Docker Compose для их одновременного запуска.
Основные сервисы:
- Infinispan — кеш-хранилище (непосредственно указано в
docker-compose.yml
). - data-scrapper — Python-скрипт для сбора/обработки данных.
- server — C# ASP.NET Core-приложение (Web API) для выдачи/агрегации данных.
- ui — фронтенд-приложение (React или Vue).
-
docker-compose.yml
- Главный файл для развёртывания всех сервисов:
- Поднимает контейнеры
infinispan
,data-scrapper
,server
иui
. - Настраивает порты и основные переменные окружения для каждого сервиса.
- Поднимает контейнеры
- Главный файл для развёртывания всех сервисов:
-
.gitignore
/.dockerignore
- Шаблоны, позволяющие исключать временные файлы из репозитория и сборки Docker-образов.
- Назначение: Python-скрипт для периодического сбора/обработки данных с записью в кеш (Infinispan).
- Содержимое:
Dockerfile
: описывает базу (Python), установку зависимостей изrequirements.txt
и запускmain.py
.requirements.txt
: список Python-зависимостей.main.py
или другой основной скрипт: входная точка (точка запуска).
При запуске docker-compose up --build
в корне проекта создаётся Docker-образ сервиса data-scrapper
, который использует переменные окружения из docker-compose.yml
для доступа к Infinispan.
- Назначение: C# ASP.NET Core-приложение, обрабатывающее данные из кеша. Предоставляет Web API для
ui
и других потенциальных клиентов. - Содержимое:
.sln
-файл (решение) и проекты:.Web
(или аналог) — ASP.NET Core Web API..Core
— бизнес-логика, если применимо..Infrastructure
— работа с внешними источниками (Infinispan, базы данных и т. п.).
Dockerfile
: инструкции по сборке .NET-приложения (включаяdotnet restore
,dotnet build
,dotnet publish
) и проброс порта (обычно80
внутри контейнера, снаружи маппится на8080
).
- Назначение: Фронтенд-приложение, написанное на React/Vue.
- Содержимое:
package.json
/package-lock.json
(илиyarn.lock
): описывают зависимости.- Исходники в
src/
, статические или публичные файлы вpublic/
(React) илиdist/
(Vue, после сборки). Dockerfile
: может быть в двух вариантах:- Dev-сервер (Node.js) с Hot Reload для разработки.
- Production-сборка (мульти-стейдж: сборка → копирование статических файлов в Nginx).
- Установите Docker и Docker Compose (убедитесь, что они работают корректно).
- Клонируйте репозиторий:
git clone https://github.com/razrez/data-aggregator.git cd data-aggregator/src
- Соберите и запустите все сервисы командой:
docker-compose up --build
- Будут собраны образы всех сервисов.
- Запустятся контейнеры infinispan, data-scrapper, server и ui.
- Проверьте:
- Infinispan по порту 11222.
- server по адресу http://localhost:8080 (Web API).
- ui по адресу http://localhost:3000 (React/Vue-приложение).
Ниже приведены примеры HTTP-запросов (в формате curl
) для проверки основных методов Minimal API.
- Получить один пост по ключу
curl -X GET "http://localhost:8080/posts/1466831"
- 1466831 – пример ключа, который был сохранён в Infinispan (смотри логи Python-сервиса).
- Порт (8080) и маршрут (/posts) могут отличаться в зависимости от конфигурации.
- Получить последние N постов
curl -X GET "http://localhost:8080/posts?limit=5"
- Параметр limit указывает, сколько постов отдать (сортировка по дате убывания).
- Получить статистику по хэштегам за период
curl -X GET "http://localhost:8080/analytics?startDate=2025-01-20&endDate=2025-01-27"
- Параметры startDate и endDate указывают даты начала и конца периода (в формате YYYY-MM-DD).
- В ответе придёт JSON c подсчётом встреченных хэштегов (например, #vk, #books и т. д.).
- Swagger (опционально) Если приложение запущено в Development режиме, откройте в браузере и тестируйте эндпоинты через веб-интерфейс:
http://localhost:8080/swagger