Виконавець: Vitaly Aksonov
-
Клонуйте репозиторій:
git clone https://github.com/aksvitpav/se_school_test.git cd se_school_test
-
Налаштуйте файл середовища:
Скопіюйте
.env.example
у.env
:cp .env.example .env
-
Запуск проєкта в docker compose:
docker compose up -d
Якщо Ви робите це вперше після клонування репозиторію, то треба дочекатися встановлення залежностей проєкту (в цей час API повертає помилку 502)
-
Доступ до проєкту за адресою: http://localhost:8000
Цей проєкт реалізує систему отримання поточного курсу USD та щоденне інформування про курс USD за допомогою email сповіщень. Основні функції включають:
- Отримання поточного значення курсу продажу/купівлі USD: Використовується API PrivatBank. Кожні 15хв. сервіс отримує з API поточний курс купівлі/продажу валют (USD та EUR). До БД зберігається курс купівлі/продажу USD. Якщо попереднє значення курсу валют таке ж саме, як і отримане - система оновлює в БД лише дату отримання (fetched_at).
- Видалення застарілих значень курсу продажу/купівлі USD: кожного дня система о 00:00 видаляє записи, що старіші за 2 доби.
- Отримання поточного курсу: Роут GET /api/rate дає змогу отримати поточний курс купівлі/продажу USD.
- Підписання email: Роут POST /api/subscribe дає змогу підписати email для отримання листів з поточним курсом купівлі/продажу USD. Кожну годину система перевіряє підписантів, які не отримали email сповіщень у поточну добу, формує список, для кожного з них створює задачу в чергу на відправку такого листа. Якщо лист було відправлено успішно - відповідний адресат у полі emailed_at отримає дату останньої відправки листа. Таким чином, якщо при відправці листа сталася помилка, через годину адресату знову система спробує надіслати листа.
Документація API доступна для перегляду за адресою /api/documentation
.
Проєкт містить тести для забезпечення стабільності та коректної роботи системи. Щоб запустити тести, виконайте команду:
php artisan test