No description
- Kotlin 61%
- JavaScript 34.9%
- CSS 2.8%
- HTML 0.8%
- Dockerfile 0.5%
|
Some checks failed
Docker Publish (Docker Hub) / Detect changes (push) Waiting to run
Docker Publish (Docker Hub) / Build & Push frontend (push) Blocked by required conditions
Docker Publish (Docker Hub) / Build & Push monolit (push) Blocked by required conditions
Docker Publish (Docker Hub) / Build & Push messenger (push) Blocked by required conditions
Docker Publish (Docker Hub) / Build & Push notifications (push) Blocked by required conditions
Docker Publish (Docker Hub) / Build & Push moderator (push) Blocked by required conditions
CI - monolit messenger frontend / Detect Changed Services (push) Successful in 4s
CI - monolit messenger frontend / Build & Test (monolit) (25, java, monolit) (push) Failing after 8m52s
CI - monolit messenger frontend / Quality Gate (push) Failing after 2s
|
||
|---|---|---|
| .github/workflows | ||
| .idea | ||
| frontend | ||
| input | ||
| messenger | ||
| moderator | ||
| monolit | ||
| notifications | ||
| traefik | ||
| .DS_Store | ||
| docker-compose.base.yml | ||
| docker-compose.dev.yml | ||
| docker-compose.prod.yml | ||
| loki-config.yaml | ||
| pitomets.iml | ||
| prometheus.yml | ||
| README.md | ||
| vector.toml | ||
Pitomets
Маркетплейс для питомцев: объявления, поиск, избранное, отзывы и real‑time чат.
- Frontend: React + Vite (
/frontend) - Основной backend: Spring Boot (Kotlin) (
/monolit) - Messenger: Ktor + WebSocket (
/messenger) - Модерация: Kafka consumer + внешнее API (
/moderator) - Уведомления: email/шаблоны + Kafka (
/notifications) - Инфраструктура: PostgreSQL, Redis, Kafka, Elasticsearch, MinIO, Prometheus/Grafana, Loki/Vector, Traefik
Архитектура (в общих чертах)
graph LR
U["User / Browser"]
TRAE["Traefik (reverse proxy)"]
FE["Frontend"]
API["Monolit (Gateway)"]
WS["Messenger (WebSocket)"]
PG[(PostgreSQL)]
R[(Redis)]
ES[(Elasticsearch)]
S3[(MinIO)]
K[[Kafka]]
MOD["Moderator service"]
NTF["Notifications service"]
MODAPI["Moderium API (external)"]
SMTP["SMTP server (external)"]
U --> TRAE
TRAE --> FE
TRAE --> API
TRAE --> S3
API --> PG
API --> R
API --> ES
API --> S3
API --> WS
API --> K
K --> NTF
K --> MOD
MOD --> MODAPI
NTF --> SMTP
NTF --> PG
%% Styling (services vs data vs external)
classDef edge fill:#111827,stroke:#0b1220,color:#ffffff;
classDef svc fill:#2563eb,stroke:#1d4ed8,color:#ffffff;
classDef data fill:#10b981,stroke:#059669,color:#ffffff;
classDef bus fill:#f59e0b,stroke:#d97706,color:#111827;
classDef ext fill:#ef4444,stroke:#dc2626,color:#ffffff;
class U,TRAE edge;
class FE,API,WS,MOD,NTF svc;
class PG,R,ES,S3 data;
class K bus;
class MODAPI,SMTP ext;
Быстрый старт (Dev)
- Создать внешнюю сеть (один раз):
docker network create web
- Поднять инфраструктуру + сервисы:
docker compose -f docker-compose.base.yml -f docker-compose.dev.yml up --build
Открыть:
- Frontend:
http://localhost:3001 - Monolit API:
http://localhost:8080 - Messenger:
http://localhost:8081(WS на/ws/chat, см.messenger/README.md) - Grafana:
http://localhost:3000(admin/admin) - Prometheus:
http://localhost:9090 - MinIO console:
http://localhost:9001(minioadmin/minioadmin) - Mailhog:
http://localhost:8025
Production (Docker + Traefik)
- Traefik поднимается отдельно:
traefik/docker-compose.yml(требует ту же внешнюю сетьweb). - Образы/переменные по умолчанию лежат в
.env, а дополнительные prod‑настройки — в.env.prod.
Запуск:
docker network create web
docker compose -f traefik/docker-compose.yml up -d
docker compose -f docker-compose.base.yml -f docker-compose.prod.yml up -d
Маршруты в docker-compose.prod.yml настроены так:
https://<host>/api/*→ monolit (контейнерmonolit, порт 8080)https://<host>/ws/*→ messenger (порт 8081)https://<host>/media/*→ MinIO (порт 9000)- Остальное → frontend (порт 80)
Сервисы и порты (локально)
| Компонент | Порт(ы) | Назначение |
|---|---|---|
| Frontend | 3001 | UI (dev‑сервер) |
| Monolit | 8080 | API (Spring Boot) |
| Messenger | 8081 | API/WS (Ktor) |
| Notifications | 8082 | Email‑уведомления (dev) |
| PostgreSQL | 5432 | Основная БД (pitomets) |
| PostgreSQL (messenger) | 5433 | БД чатов (messenger) |
| Redis | 6379 | Кеш/сессии |
| Elasticsearch | 9200 | Поиск |
| Kafka | 9092, 29092 | События/очереди |
| MinIO | 9000, 9001 | S3‑совместимое хранилище |
| Prometheus | 9090 | Метрики |
| Grafana | 3000 | Дашборды |
| Loki | 3100 | Логи |
| cAdvisor | 4040 | Метрики контейнеров |
Полезные ссылки по модулям
frontend/README.md— возможности UI и конфигурацияVITE_API_BASE_URLmessenger/README.md— API/WS и требования кX-User-Idmoderator/README.md— форматы событий Kafka и переменные окруженияmonolit/README.md— локальные заметки по сборке/инфре
Legacy: старый README (технические заметки)
# pitomets
this is description
Предварительная настройка (создание сети)
```
docker network create web
```
Можно пробить туннель до контейнеров
```
ssh -i ~/.ssh/1244 -L 5432:localhost:5432 student@178.154.194.186
```
дев сборка
```
docker compose -f docker-compose.base.yml -f docker-compose.dev.yml down && docker compose -f docker-compose.base.yml -f docker-compose.dev.yml up --build
```
прод сборка
```
docker compose -f docker-compose.base.yml -f docker-compose.prod.yml down && docker compose -f docker-compose.base.yml -f docker-compose.prod.yml pull && docker compose -f docker-compose.base.yml -f docker-compose.prod.yml up --build
```
Сборка образа
```
docker buildx build \
--platform linux/amd64 \
-t artshar/frontend:1.0.0 \
--build-arg VITE_API_BASE_URL=https://pitomets.com/api \
--push .
```
```
docker buildx build \
--platform linux/amd64 \
-t artshar/monolit:1.0.0 \
--push .
```
Дропнуть всё
```
docker stop $(docker ps -aq) 2>/dev/null && docker rm $(docker ps -aq) 2>/dev/null && docker volume rm $(docker volume ls -q) 2>/dev/null
```
Дашборды графаны
1860
763
9628
a
локи логи {container=~".+"}