RESTful API для системы комментариев к новостям и видео постам с поддержкой вложенных комментариев и курсорной пагинации.
- PHP 8.2+
- Laravel 11
- MySQL 8+
- Docker & Docker Compose
Проект следует принципам Clean Architecture:
- Domain Layer: Бизнес-логика, entities, Value Objects
- Application Layer: Actions (use cases), DTOs, ports, etc
- Infrastructure Layer: Адаптеры
- UI Layer: Контроллеры, CLI команды Request классы, Resources
- Клонируйте репозиторий
- Скопируйте
.env.exampleв.env(если нужно) - Запустите контейнеры:
docker-compose up -d- Выполните миграции:
docker-compose exec app php artisan migrate- API будет доступен по адресу:
http://localhost/api
POST /api/news- Создать новостьGET /api/news/{id}?cursor={cursor}&limit={limit}- Получить новость с комментариями
POST /api/video-posts- Создать видео постGET /api/video-posts/{id}?cursor={cursor}&limit={limit}- Получить видео пост с комментариями
POST /api/comments- Создать комментарийGET /api/comments/{id}- Получить комментарийPUT /api/comments/{id}- Обновить комментарийDELETE /api/comments/{id}- Удалить комментарий
POST /api/news
{
"title": "Новость",
"description": "Описание новости"
}POST /api/comments
{
"user_id": 1,
"content": "Комментарий",
"commentable_type": "news",
"commentable_id": 1
}POST /api/comments
{
"user_id": 1,
"content": "Ответ",
"commentable_type": "comment",
"commentable_id": 1,
"parent_id": 1
}Комментарии возвращаются с курсорной пагинацией:
cursor- ID последнего комментария предыдущей страницы (опционально)limit- Количество комментариев на странице (по умолчанию 20, максимум 100)
Ответ содержит:
data- Массив комментариевnext_cursor- ID для следующей страницы (null если больше нет)has_more- Есть ли еще комментарии
app/
├── Domain/ # Доменный слой
├── Application/ # Слой приложения
├── Infrastructure/ # Слой инфраструктуры
└── UI/ # Слой пользовательского интерфейса
docker-compose exec app php artisan test