Проект: - Додаток для оренди автомобілів від власника до орендаря (Peer-to-Peer Car Rental App)
Мета проекту:
Розробити бекенд-частину додатку, яка буде базуватись на Drupal 10. Бекенд повинен підтримувати всі необхідні функції для орендарів, орендодавців та адміністраторів.
1. Загальні вимоги
1.1. Мова програмування: PHP
1.2. Фреймворк: Drupal 10
1.3. Управління версіями: Git
1.4. Система управління базами даних (СУБД): MySQL
1.5. Сервер: Nginx
Взаємодія через REST API (Drupal 10 PHP)
Проект передається у контейнері Docker.
2. Функціональні вимоги
2.1. Реєстрація та автентифікація користувачів
2.1.1. Реєстрація: Реєстрація користувачів (орендарів та орендодавців) з валідацією даних.
2.1.2. Авторизація: Підтримка JWT токенів для авторизації користувачів.
2.1.3. Simple OAuth: Налаштувати для автентифікації користувачів.
2.2. Управління профілем користувача
2.2.1. Редагування профілю: Користувачі повинні мати можливість редагувати свій профіль.
2.2.2. Зміна паролю: Функція зміни паролю для користувачів.
2.3. Управління автомобілями
2.3.1. Додавання автомобіля: Орендодавці можуть додавати свої автомобілі, вказуючи детальну інформацію (марка, модель, рік, ціна, опис, фотографії). Перевірка введених даних з техпаспорту.
2.3.2. Редагування автомобіля: Менеджери можуть редагувати інформацію про свої автомобілі.
2.3.3. Видалення автомобіля: Орендодавці можуть видаляти свої автомобілі. З бази вони не видаляються, лише помічаються як видалені.
2.4. Оренда автомобілів
2.4.1. Пошук автомобілів: Орендарі можуть шукати автомобілі за різними критеріями (місцезнаходження, дата, ціна тощо).
2.4.2. Бронювання автомобіля: Орендарі можуть бронювати автомобілі на вибрані дати.
2.4.3. Календар бронювань: Візуалізація доступних та заброньованих дат для кожного автомобіля.
2.5. Управління бронюванням
2.5.1. Перегляд бронювань: Користувачі можуть переглядати свої бронювання (минулі та майбутні).
2.5.2. Скасування бронювання: Орендарі можуть скасовувати свої бронювання.
2.6. Управління відгуками та рейтингами
2.6.1. Відгуки: Користувачі можуть залишати відгуки про орендовані автомобілі, орендодавців.
2.6.2. Рейтинги: Система рейтингів для автомобілів, орендарів, орендодавців.
Бали у орендодавців та орендарів.
2.7. Управління адміністрацією
2.7.1. Панель адміністратора: Адміністратори можуть переглядати та керувати користувачами, автомобілями, бронюваннями та відгуками.
2.7.2. Модерація контенту: Адміністратори можуть модератувати додані автомобілі та відгуки.
3. Нефункціональні вимоги
3.1. Безпека:
- Всі API запити повинні бути захищені за допомогою JWT токенів.
- Паролі користувачів повинні зберігатися в зашифрованому вигляді.
3.2. Продуктивність:
- Система повинна обробляти не менш як 100 одночасних запитів.
- Відгук системи на запит користувача не повинен перевищувати 1 секунду.
3.3. Масштабованість:
- Система повинна підтримувати горизонтальне масштабування для забезпечення зростання користувачів та даних.
4. Інтеграції
4.1. Платіжні системи:
- На даному етапі відсутні.
4.2. Служби геолокації:
5. Документація
5.1. Документація API:
- Документувати всі кінцеві точки API за допомогою OpenAPI (Swagger).
6. Вимоги до тестування
6.1. Юніт-тестування:
- Написати юніт-тести для всіх основних функцій системи.
6.2. Інтеграційне тестування:
- Провести інтеграційні тести для забезпечення коректної роботи всіх компонентів системи.
P.S. ТЗ може бути доповнене з дизайну проекту.