|
1 | | -# tnews-subscription-service |
2 | | -Subscription management service for TNews project |
| 1 | +# TNEWS |
| 2 | + |
| 3 | +## Описание | Description |
| 4 | + |
| 5 | +TNEWS - это сервис для персонализированного получения новостей. Проект построен по микросервисной архитектуре и включает в себя три сервиса: |
| 6 | + |
| 7 | +TNEWS is a service for personalized news delivery. The project follows a microservice architecture and includes three services: |
| 8 | + |
| 9 | +- **subscription-service** – управляет подписками пользователей и хранит их в PostgreSQL. |
| 10 | + Manages user subscriptions and stores them in PostgreSQL. |
| 11 | +- **aggregator-service** – агрегирует новости с портала Dzen (и потенциально других источников), хранит их в MongoDB и раз в заданный период времени подбирает новости по подпискам. |
| 12 | + Aggregates news from the Dzen portal (and potentially other sources), stores them in MongoDB, and periodically selects news based on subscriptions. |
| 13 | +- **client-service** – обеспечивает связь между агрегатором новостей и пользователями через Telegram-бота, передавая пользователям отфильтрованные новости и принимая их команды. |
| 14 | + Acts as a bridge between the news aggregator and users via a Telegram bot, delivering filtered news and processing user commands. |
| 15 | + |
| 16 | +## Технологии | Technologies |
| 17 | + |
| 18 | +- **Backend**: Java, Spring Boot |
| 19 | +- **Базы данных | Databases**: PostgreSQL, MongoDB |
| 20 | +- **Контейнеризация | Containerization**: Docker |
| 21 | +- **Сборка | Build System**: Gradle |
| 22 | +- **Тестирование | Testing**: JUnit, H2, Flapdoodle |
| 23 | + |
| 24 | +## Запуск проекта | Running the project |
| 25 | + |
| 26 | +### Требования | Requirements |
| 27 | + |
| 28 | +- Установленный Docker и Docker Compose |
| 29 | + Installed Docker and Docker Compose |
| 30 | +- Java 21 |
| 31 | +- Gradle |
| 32 | +- PostgreSQL и MongoDB (либо запуск через Docker) |
| 33 | + PostgreSQL and MongoDB (or launch via Docker) |
| 34 | + |
| 35 | +### Конфигурация | Configuration |
| 36 | + |
| 37 | +Перед запуском необходимо задать токен Telegram-бота в файле конфигурации (`application.yml` или переменных окружения): |
| 38 | + |
| 39 | +Before launching, set the Telegram bot token in the configuration file (`application.yml` or environment variables): |
| 40 | + |
| 41 | +```yaml |
| 42 | +bot: |
| 43 | + name: YOUR_TELEGRAM_BOT_NAME |
| 44 | + token: YOUR_TELEGRAM_BOT_TOKEN |
| 45 | +``` |
| 46 | +
|
| 47 | +### Сборка и запуск через Docker | Build and run with Docker |
| 48 | +
|
| 49 | +Перед запуском Docker необходимо собрать проект с помощью Gradle: |
| 50 | +
|
| 51 | +Before starting Docker, build the project using Gradle: |
| 52 | +
|
| 53 | +```sh |
| 54 | +gradle build |
| 55 | +``` |
| 56 | + |
| 57 | +```sh |
| 58 | +docker-compose up -d |
| 59 | +``` |
| 60 | + |
| 61 | +## Использование | Usage |
| 62 | + |
| 63 | +- Пользователь подписывается на категории и ключевые слова через Telegram-бота. |
| 64 | + Users subscribe to categories and keywords via the Telegram bot. |
| 65 | +- Агрегатор собирает новости, фильтрует их и отправляет пользователю в соответствии с подписками. |
| 66 | + The aggregator collects, filters, and sends news to users based on subscriptions. |
| 67 | +- Новости обновляются автоматически с заданным интервалом. |
| 68 | + News is updated automatically at a set interval. |
| 69 | + |
| 70 | +## TODO |
| 71 | + |
| 72 | +- Добавить поддержку дополнительных источников новостей |
| 73 | + Add support for additional news sources. |
| 74 | + |
3 | 75 |
|
4 | | -Проект позволяет пользователю получать подборку новостей в телеграм бот с определенной периодичностью. |
5 | 76 |
|
6 | | -Требования: |
7 | | -1. Аггрегация и индексация статей с разных источников (dzen.ru в качестве первого источника). |
8 | | -2. Пользователь должен иметь возможность зарегистрироваться в телеграм-боте, указать категории и\или ключевые слова и периодичность обновления. |
9 | | -3. Пользователь должно получать подборку новостей в соответствии с индивидуальными настройками. |
10 | 77 |
|
11 | | - |
|
0 commit comments