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