Skip to content

NTCTE/blog-api

Repository files navigation

Blog API

REST API для блог-платформы, построенное на Laravel 12. Проект предоставляет полный функционал для управления постами, комментариями и лайками с системой аутентификации.

Функциональные возможности

  • Аутентификация - регистрация и авторизация через Laravel Sanctum
  • Управление постами - создание, чтение, обновление и удаление постов
  • Комментарии - система комментариев к постам
  • Лайки - возможность лайкать посты и комментарии
  • Фильтрация - гибкая система фильтрации постов
  • Мультиязычность - поддержка русского и английского языков
  • Пагинация - настраиваемая пагинация результатов

Требования

  • PHP 8.2 или выше
  • Laravel 12
  • MySQL 8.0 или выше или Sqlite для локальной разработки
  • Composer

Установка

  1. Клонируйте репозиторий:

    git clone https://github.com/NTCTE/blog-api.git
  2. Перейдите в директорию проекта:

    cd blog-api
  3. Установите зависимости через Composer:

    composer install
  4. Скопируйте файл окружения и настройте его:

    cp .env.example .env
  5. Сгенерируйте ключ приложения:

    php artisan key:generate
  6. Настройте параметры базы данных в файле .env.

  7. Выполните миграции:

    php artisan migrate
  8. Запустите локальный сервер:

    php artisan serve

Структура проекта

Основные директории

  • Contracts - интерфейсы сервисов
  • Services - бизнес-логика приложения
  • Controllers - контроллеры API
  • Requests - валидация запросов
  • Resources - форматирование ответов API
  • Models - модели Eloquent
  • Structures - DTO объекты
  • Exceptions - кастомные исключения

Ключевые компоненты

Сервисы

  • AuthService - аутентификация пользователей
  • PostService - управление постами
  • CommentService - управление комментариями
  • LikeService - система лайков

Модели

  • User - пользователи
  • Post - посты
  • Comment - комментарии
  • Like - лайки (полиморфная модель)

Архитектурные решения

Service Layer Pattern

Вся бизнес-логика вынесена в сервисы (app/Services), которые реализуют интерфейсы из Contracts.

DTO (Data Transfer Objects)

Используются структуры данных (app/Structures) для передачи данных между слоями.

Custom Exceptions

Собственные исключения (app/Exceptions) для удобной обработки ошибок.

API Resources

Laravel Resources (app/Http/Resources) для форматирования JSON ответов.

Локализация

Поддержка нескольких языков с использованием файлов локализации в resources/lang.

Контакты

Для вопросов и предложений создайте issue в репозитории или свяжитесь по в Telegram.

About

API для тестирования создания клиентов

Topics

Resources

License

Stars

Watchers

Forks

Languages