Тестовый Laravel стенд Сергея Бакланова php-cat.com

GitHub код этого сайта со всеми блоками

Что в этой площадке уже интересного использую:
+ три разных Swagger для ручных тестов API: index, payments и logistic
+ ci/cd использую github action (автопубликация изменений на сервер и оповещение приходит в группу vk.com )
Готово Модель Товары + API + swager

Swagger index покликать API, ключевая модель Product (остальные прицепом появились из других тест заданий), слоёная структура проекта контроллер, сервис, репозиторий

Готово Модель Payment + API + swager

Swagger payments
Описание задачи: вам необходимо написать код, по которому происходит зачисление и списание крипто-баланса пользователя, с учетом рисков
добавил свагер покликать API

Готово vue3 играем в судоку!

Играть в судоку

Создать судоку в которое играть норм

Авто выставление подсказок, показ и учёт ошибок, фейерверк при победе :)

Готово vue3 + получение инфы о компании с яндекс карт
создал парсинг сервис и мордашку, версия базовая, не спешащая

Переход в vue3 приложение

Получаем ссылку на компанию и показываем оценку и отзывы

Готово Logistic API + swagger

Swagger logistic

Отдельная документация для логистического модуля со слотами, удержаниями, подтверждением и отменой hold.

В проект добавлены контроллеры, сервис, модели, миграции и feature-тесты из тестового logistic-стенда.

Задание и видео лайв кодинга (смотреть на x5))

GitHub

204 репозитория в GitHub

весь код хранится в гите, автоматизация ci/cd экономят массу времени для обновления протестированного кода на серверах в тест и прод окружении

Пакеты composer в Packagist

nyos в Packagist

пишу композер пакеты, версионирование, сложные связки оч.удобно хранить и использовать



Логическая тест задача, обьяснить что да как

Вопрос:

1. Есть Laravel сайт (***) и CRM (***) на shared-хостинге с FTP.
Нужно перенести на VPS и выстроить правильную инфраструктуру.

Что требуется:

  • Ubuntu 22.04
  • Nginx + PHP 8.2 + MySQL
  • Redis + Supervisor
  • Production + Staging (отдельные окружения)
  • GitHub (main / staging)
  • Автодеплой
  • Безопасные доступы (без прямого доступа к продакшену)
  • Бэкапы

В видео в формате “говорящей головы” (1–2 минуты) прошу кратко объяснить:

1. Как вы построите архитектуру.
2. Как будет организован деплой.
3. Как вы изолируете staging от production.

Ответ:

Тест задание создание api (для логистики склада)

Тестовое задание

Реализуйте минимальный API бронирования слотов с горячим кешем и защитой от оверсела. Ниже — подробный бриф с требованиями и ожидаемыми результатами.

📘 Контекст

Вы проектируете сервис, который управляет бронью слотов (складские окна, доставка или время приема клиентов). Каждый слот имеет ограниченную вместимость, пользователи могут создавать временные холды, а затем подтверждать их. Нужно обеспечить корректную работу под нагрузкой: горячий кеш, транзакции, защита от оверсела.

⚙️ Функциональные требования

  1. Получение доступных слотов
    Метод: GET /slots/availability
    Пример ответа:
    [
      { "slot_id": 1, "capacity": 10, "remaining": 6 },
      { "slot_id": 2, "capacity": 5, "remaining": 0 }
    ]
    • Кешировать результат на 5–15 секунд, предусмотреть защиту от cache stampede.
    • После подтверждения или отмены данных инвалидировать кеш.
  2. Создание холда
    Метод: POST /slots/{id}/hold
    Заголовок: Idempotency-Key: <UUID>
    • Создает запись в таблице holds со статусом held.
    • Проверяет доступность мест и возвращает 409 Conflict, если capacity исчерпан.
    • Повторный запрос с тем же ключом возвращает прежний результат (идемпотентность).
    • Холды живут 5 минут (фоновую очистку можно не реализовывать).
  3. Подтверждение холда
    Метод: POST /holds/{id}/confirm
    • Переводит холд в состояние confirmed.
    • Атомарно уменьшает remaining в слоте на 1 с защитой от оверсела.
    • При отсутствии мест возвращает 409 Conflict.
    • После успешного подтверждения инвалидирует кеш доступности.
  4. Отмена холда
    Метод: DELETE /holds/{id}
    • Меняет состояние холда на cancelled.
    • Возвращает слот в доступ, обновляя остаток.
    • Инвалидирует кеш доступных слотов.

✅ Ожидаемые результаты

  • Код на Laravel 12 (PHP 8.2+) и MySQL 8+.
  • Маршруты определены в routes/api.php.
  • Контроллеры: AvailabilityController, HoldController.
  • Сервисный слой: SlotService (транзакции, кеш, идемпотентность).
  • Минимальные миграции для таблиц слотов и холдов.
  • README с инструкциями запуска (php artisan migrate, php artisan serve) и примерами curl-запросов (создание холда, повтор с тем же ключом, подтверждение, отмена, конфликт при оверселе).

➕ Дополнительные требования

  • Запись экрана с голосовыми пояснениями во время реализации (подготовка и планирование заранее приветствуются).
  • Готовое видео загрузить на Яндекс.Диск, открыть доступ для **@yandex.ru.
  • В письме указать ссылку на видео, а также репозиторий с финальным кодом.

🚀 Что сделать кандидатy

  1. Изучите требования и спланируйте архитектуру сервиса.
  2. Реализуйте API с учетом кеша, транзакций и идемпотентности.
  3. Запишите видео процесса разработки с комментариями.
  4. Подготовьте README и примеры запросов.
  5. Выложите видео и репозиторий, отправьте ссылки на **@yandex.ru с темой письма «Видео-вакансия — результат - ФИО».
  6. Срок выполнения: 10 дней со дня получения письма с ссылкой на задание.

видео лайв кодинга

часть1


часть 2