REST API для блог-платформы, построенное на Laravel 12. Проект предоставляет полный функционал для управления постами, комментариями и лайками с системой аутентификации.
- Аутентификация - регистрация и авторизация через Laravel Sanctum
- Управление постами - создание, чтение, обновление и удаление постов
- Комментарии - система комментариев к постам
- Лайки - возможность лайкать посты и комментарии
- Фильтрация - гибкая система фильтрации постов
- Мультиязычность - поддержка русского и английского языков
- Пагинация - настраиваемая пагинация результатов
- PHP 8.2 или выше
- Laravel 12
- MySQL 8.0 или выше или Sqlite для локальной разработки
- Composer
-
Клонируйте репозиторий:
git clone https://github.com/NTCTE/blog-api.git
-
Перейдите в директорию проекта:
cd blog-api -
Установите зависимости через Composer:
composer install
-
Скопируйте файл окружения и настройте его:
cp .env.example .env
-
Сгенерируйте ключ приложения:
php artisan key:generate
-
Настройте параметры базы данных в файле
.env. -
Выполните миграции:
php artisan migrate
-
Запустите локальный сервер:
php artisan serve
- Contracts - интерфейсы сервисов
- Services - бизнес-логика приложения
- Controllers - контроллеры API
- Requests - валидация запросов
- Resources - форматирование ответов API
- Models - модели Eloquent
- Structures - DTO объекты
- Exceptions - кастомные исключения
- AuthService - аутентификация пользователей
- PostService - управление постами
- CommentService - управление комментариями
- LikeService - система лайков
- User - пользователи
- Post - посты
- Comment - комментарии
- Like - лайки (полиморфная модель)
Вся бизнес-логика вынесена в сервисы (app/Services), которые реализуют интерфейсы из Contracts.
Используются структуры данных (app/Structures) для передачи данных между слоями.
Собственные исключения (app/Exceptions) для удобной обработки ошибок.
Laravel Resources (app/Http/Resources) для форматирования JSON ответов.
Поддержка нескольких языков с использованием файлов локализации в resources/lang.
Для вопросов и предложений создайте issue в репозитории или свяжитесь по в Telegram.