Gonews — это микросервисная платформа на Go для парсинга RSS источников агрегации, хранения и распространения новостей с системой комментариев и цензуры.
Проект состоит из нескольких микросервисов:
- Единая точка входа для всех клиентских запросов
- Маршрутизация между сервисами
- Агрегация данных
- Парсинг RSS-лент и агрегация новостей
- Хранение публикаций в PostgreSQL
- API для работы с новостями
- Пагинация и фильтрация
- Управление комментариями к новостям
- Хранение комментариев в базе данных
- CRUD операции для комментариев
- Модерация контента
- Проверка текстов на соответствие правилам
- Фильтрация нежелательного контента
gonews/
├── api-gateway/ # API шлюз
│ ├── cmd/ # Точка входа
│ ├── internal/
│ │ ├── api/ # API handlers
│ │ ├── app/ # Логика приложения
│ │ ├── infrastructure/ # Инфраструктура
│ │ ├── models/ # Модели данных
│ │ └── transport/ # HTTP транспорт
│ ├── Dockerfile
│ └── go.mod
├── newsservice/ # Сервис новостей
│ ├── cmd/
│ ├── internal/
│ │ ├── app/
│ │ ├── infrastructure/
│ │ ├── models/ # Модели новостей
│ │ ├── pagination/ # Пагинация
│ │ ├── rss/ # RSS парсер
│ │ ├── storage/ # Хранилище
│ │ └── transport/ # HTTP handlers
│ ├── Dockerfile
│ └── go.mod
├── commentservice/ # Сервис комментариев
│ ├── cmd/
│ ├── internal/
│ │ └── storage/ # Хранилище комментариев
│ ├── Dockerfile
│ └── go.mod
├── censorservice/ # Сервис цензуры
│ ├── cmd/
│ ├── internal/
│ ├── Dockerfile
│ └── go.mod
└── docker-compose.yml # Оркестрация контейнеров
- Docker
- Docker Compose
docker-compose up -ddocker-compose down# Запуск отдельных сервисов
cd newsservice && go run cmd/main.go
cd commentservice && go run cmd/main.go
cd censorservice && go run cmd/main.go
cd api-gateway && go run cmd/main.go- Go - основной язык разработки
- PostgreSQL - основная база данных
- Docker - контейнеризация
- REST API - коммуникация между сервисами
- gRPC - коммуникация между сервисами комментариев и цензуры