Ориентир — 15 минут. Нейросети использовать можно и нужно: Claude, ChatGPT, Cursor, Copilot — что угодно, мы сами так работаем.
Созвона не будет — не ждите от нас приглашения. Всё делаете сами, в удобное вам время:
прочитали ТЗ → поставили инструменты → включили запись экрана → сделали задание → прислали нам ссылки (как — в конце блока 3).
Записывайте весь процесс целиком: как запускаете проект, что читаете в коде, что спрашиваете у нейросети, как проверяете результат. Можно с голосом — так ещё лучше. Нам важен ход работы, а не только итоговый код.
Перед тем как включать запись, поставьте:
| Что | Зачем |
|---|---|
| Программа записи экрана — OBS, Loom или встроенная в систему | записать видео выполнения |
| Docker Desktop (скачать) и запустить его | в нём поднимается проект, локальный PHP не нужен |
Postman (скачать) или curl |
дёргать роуты и смотреть ответы |
| Любой редактор с PHP — VS Code, PhpStorm, Cursor | смотреть и править код |
| Доступ к вашей нейросети | пригодится |
Вместо Docker подойдёт локальный PHP 8.2+ с Composer, если он у вас уже стоит.
Проверьте заранее, что Docker живой:
docker run --rm hello-worldМини-сервис реферальной программы MastApp. Мастер приводит другого мастера по своему коду и получает за это вознаграждение.
В базе три таблицы: masters (мастера), payments (их платежи за подписку)
и referrals (кто кого привёл). Данные уже засеяны: Маша с кодом MASHA10
и четверо приведённых ею мастеров с разной историей платежей.
Есть модели, сервис ReferralService и обработчик платежей PaymentObserver.
Три роута в routes/api.php:
| Метод | Путь | Что делает |
|---|---|---|
POST |
/api/referrals/attach |
принимает { "code": "MASHA10" } и закрепляет текущего мастера за владельцем кода. Повторный вызов не создаёт вторую привязку, за себя закрепиться нельзя |
GET |
/api/referrals/my |
список приведённых мной мастеров: имя, дата привязки, засчитан или нет, сколько по нему начислено |
GET |
/api/referrals/earnings |
сводка по деньгам: всего начислено, в ожидании, выплачено, сколько рефералов засчитано |
Текущий мастер приходит в заголовке X-Master-Id, авторизация заглушена.
X-Master-Id: 1 — это Маша.
Формат JSON выбираете сами. Красивая архитектура не нужна — нужно рабочее и честное.
Два правила мы намеренно не описываем словами: в какой момент реферал считается засчитанным и как считается сумма вознаграждения. Оба уже зафиксированы в коде проекта. Ваши роуты должны вести себя так, как ведёт себя система, а не так, как «обычно бывает в реферальных программах».
- Если ещё не сделали — создайте свой репозиторий из этого шаблона: кнопка Use this template → Create a new repository на странице задания на GitHub.
- Закоммитьте свою работу и запушьте её в свой репозиторий.
- Сделайте репозиторий публичным, чтобы мы могли открыть его без запроса доступа.
- Пришлите нам две ссылки:
- на ваш репозиторий;
- на видео — YouTube (доступ по ссылке), Google Drive, Яндекс Диск, Loom — куда удобно, главное чтобы открывалось без запроса доступа.
Команды выполняются из папки проекта.
docker run --rm -v "$PWD:/app" -w /app composer:2 composer installВ PowerShell вместо $PWD подставьте полный путь: -v "C:\путь\к\проекту:/app".
Займёт минуту-две, качается Laravel.
docker run --rm -v "$PWD:/app" -w /app php:8.3-cli sh -c "\
cp -n .env.example .env; \
php artisan key:generate --force; \
touch database/database.sqlite; \
php artisan migrate --seed --force"docker run --rm -p 8000:8000 -v "$PWD:/app" -w /app php:8.3-cli \
php artisan serve --host=0.0.0.0 --port=8000Если порт 8000 занят — поменяйте на -p 8001:8000 и ходите на 8001.
Проверка, что живой:
curl http://localhost:8000/api/ping
# {"ok":true}Пишете их, дёргаете Postman'ом с заголовком X-Master-Id: 1 и смотрите,
сходятся ли числа.
Полезное:
php artisan migrate:fresh --seed # пересобрать базу с нуля
php artisan route:list # посмотреть свои роуты
php artisan tinker # покопаться в данных рукамиЧерез Docker — та же команда внутри docker run --rm -v "$PWD:/app" -w /app php:8.3-cli ...