Skip to content

Commit 457dc59

Browse files
authored
Merge pull request #29 from AliKamil/tnews-29/closePorts
All ports in the DB have been closed and overwritten README.md
2 parents fb3eff9 + f7b915a commit 457dc59

File tree

2 files changed

+102
-21
lines changed

2 files changed

+102
-21
lines changed

README.md

Lines changed: 74 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,77 @@
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+
375

4-
Проект позволяет пользователю получать подборку новостей в телеграм бот с определенной периодичностью.
576

6-
Требования:
7-
1. Аггрегация и индексация статей с разных источников (dzen.ru в качестве первого источника).
8-
2. Пользователь должен иметь возможность зарегистрироваться в телеграм-боте, указать категории и\или ключевые слова и периодичность обновления.
9-
3. Пользователь должно получать подборку новостей в соответствии с индивидуальными настройками.
1077

11-
![image](https://github.com/user-attachments/assets/7994aa40-2422-4d3a-ae1c-c513a61002a2)

docker-compose.yml

Lines changed: 28 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
11
../services:
22
postgres-db:
3-
image: postgres
3+
image: postgres:latest
44
container_name: tnews-db
55
environment:
66
POSTGRES_DB: tnews_DB
77
POSTGRES_USER: tnews_DB
88
POSTGRES_PASSWORD: postgres_tnews_DB
9-
ports:
10-
- "5555:5432"
9+
networks:
10+
- internal_net
11+
volumes:
12+
- postgres_data:/var/lib/postgresql/data
1113

1214
mongo:
1315
image: mongo:latest
@@ -17,36 +19,49 @@
1719
MONGO_INITDB_ROOT_USERNAME: root
1820
MONGO_INITDB_ROOT_PASSWORD: password
1921
MONGO_INITDB_DATABASE: newsdb
20-
ports:
21-
- "27017:27017"
2222
volumes:
2323
- ./init-mongo.js:/docker-entrypoint-initdb.d/init-mongo.js:ro
24-
24+
- mongo_data:/data/db
25+
networks:
26+
- internal_net
2527

2628
subscription-service:
2729
build: ./subscription-service
2830
container_name: subscription-service
2931
depends_on:
3032
- postgres-db
31-
- aggregation-service # стоит ли ждать агрегатор при запуске?
32-
ports:
33-
- "8081:8080"
33+
- aggregation-service
3434
environment:
3535
SPRING_DATASOURCE_URL: jdbc:postgresql://tnews-db:5432/tnews_DB
3636
SPRING_DATASOURCE_USERNAME: tnews_DB
3737
SPRING_DATASOURCE_PASSWORD: postgres_tnews_DB
3838
AGGREGATOR_SERVICE_URL: http://aggregation-service:8080/news
39-
39+
networks:
40+
- internal_net
41+
- default
4042

4143
aggregation-service:
4244
build: ./aggregation-service
4345
container_name: aggregation-service
4446
depends_on:
4547
- mongo
46-
ports:
47-
- "8082:8080"
4848
environment:
4949
MONGO_USERNAME: user
5050
MONGO_PASSWORD: password
5151
MONGO_DATABASE: newsdb
52-
MONGO_PORT: 27017
52+
MONGO_PORT: 27017
53+
networks:
54+
- internal_net
55+
- default
56+
57+
networks:
58+
internal_net:
59+
internal: true
60+
default:
61+
driver: bridge
62+
63+
volumes:
64+
postgres_data:
65+
driver: local
66+
mongo_data:
67+
driver: local

0 commit comments

Comments
 (0)