Skip to content

TJirden/link-tracker

Repository files navigation

LinkTracker

LinkTracker – Telegram-бот, который отслеживает изменения на веб-страницах и оперативно информирует пользователя о них.

Инструкция по локальному запуску (для проверяющего)

Приложение разработано для максимального удобства запуска: никаких громоздких Docker-образов самих модулей собирать не нужно, модули запускаются "просто из IDE". Единственная внешняя зависимость — это сама база данных PostgreSQL.

1. Подготовка окружения (Переменные)

В корне проекта создайте файл .env на основе шаблона .env.example:

cp .env.example .env

Укажите в .env (или прямо в настройках Run Configuration вашей IDE) актуальные токены:

  • TELEGRAM_TOKEN — токен вашего Telegram бота (BotFather).
  • GITHUB_TOKEN — токен для работы с API GitHub.
  • STACKOVERFLOW_KEY и STACKOVERFLOW_ACCESS_KEY — ключи доступа к API StackOverflow.

2. Запуск Инфраструктуры (PostgreSQL, Kafka KRaft, Schema Registry, Valkey)

В проекте предусмотрен docker-compose.yml, который разворачивает полноценное окружение:

  • PostgreSQL (порт 5432) — основная база данных для Scrapper.
  • Кластер Kafka (KRaft) из 3 брокеров (порты 9092, 9094, 9095) — для асинхронного обмена сообщениями.
  • Confluent Schema Registry (порт 8081) — для управления Avro-схемами.
  • Кластер Valkey (порты 6379, 6380, 6381) — 3-нодовый распределённый кластер кэширования.
  • RedisInsight (порт 8001) — GUI-веб-панель для просмотра ключей и мониторинга Valkey.

Для запуска всей инфраструктуры выполните:

docker compose up -d

3. Сборка и тестирование (Testcontainers)

Убедитесь, что у вас работает Docker (он нужен для Testcontainers во время сборки). Запустите сборку проекта:

./mvnw clean install

Во время тестов Spring Boot самостоятельно поднимет временные Docker-контейнеры с БД и Kafka, накатит миграции Liquibase и прогонит все интеграционные тесты.

4. Запуск приложения "из IDE"

Запустите модули в следующем порядке:

  1. Запустите класс backend.academy.linktracker.scrapper.ScrapperApplication (модуль scrapper). При старте Liquibase автоматически создаст все таблицы в локальной базе из docker-compose, а планировщик начнет опрашивать ссылки.
  2. Запустите класс backend.academy.linktracker.bot.BotApplication (модуль bot).

Параметры запуска и конфигурации (в application.yaml):

  • app.use-queue — при значении true (по умолчанию) уведомления отправляются асинхронно через паттерн Transactional Outbox в Apache Kafka. При значении false используется синхронный HTTP-клиент.
  • app.database.access-type — переключение между sql (JDBC) и orm (Hibernate/JPA) в Scrapper.
  • app.cache.ttl — время жизни (TTL) записей в кэше L2 (Valkey).
  • Все настройки очередей, кэша (Caffeine/Valkey), включая адреса брокеров, нод кластера, Schema Registry, политики ретраев и DLQ, настраиваются в файлах application.yaml модулей bot и scrapper.

Полезную для разработки проекта информацию вы можете найти в файле HELP.md.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages