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

Тестовое задание PHP-разработчик

Три задания из ТЗ — два обязательных и одно бонусное. Подробности реализации, алгоритмы и разбор отвергнутых альтернатив — в README.md и каталоге docs/test-task/.

Задание 1 · обязательное

Console + JSON API

Команда jokes:fetch по расписанию каждые 5 минут забирает шутку с official-joke-api и сохраняет в БД через updateOrCreate (идемпотентно). HTTP endpoint отдаёт пагинированный JSON.

GET /api/jokes →
Задание 2 · обязательное

JS: видимость полей по «Тип»

Drop-in IIFE без зависимостей. Слушает change на <select name="type_val"> и оставляет видимыми только те поля, в name которых содержится выбранное значение.

Задание 3 · бонус

Счётчик посещений

JS-коллектор track.js (sendBeacon, без зависимостей) → ingest endpoint POST /api/visits (UA-парсинг, throttle, CORS-safe) → дашборд статистики с графиками Chart.js под Breeze auth.

Совет проверяющему: чтобы увидеть pie-chart по городам в задании 3 — зарегистрируйтесь и засейте демо-данные: php artisan db:seed --class=DemoVisitsSeeder .