Вітаю! Ти вже не з чуток знаєш про структуру backend, NodeJS та написання чистого, читабельного і якісного коду, але є одне "але"... Не всі проєкти, що будуть траплятися на твоєму шляху, будуть написані розробниками, які знають про це стільки ж
Відрефакторити проєкт, зберігши всю його функціональність (так-так, воно працює)
- Проєкт має тільки backend частину
- Весь функціонал працює та, навіть, покритий тестами. Як запустити сервер та автотести ти дізнаєшся з README.md
- На жаль, ніякої документації та описаних вимог до бізнес-логіки немає... Проте є код, а я кажуть:
The code is the documentation
- Окрім запуску автотестів, розібратись з бізнес-логікою тобі допоможе Postman колекція. Ти можеш імпортувати її (не забудь також postman env файл) до себе у Postman, щоб побачити приклади HTTP запитів та використовувати їх для мануального тестування.
Технології:
- Розбити код на шари (шар бізнес-логіки, шар доступу до даних тощо)
- Створити структуру файлів
- Позбутися дублювання коду
- Позбутися використання антипатернів
- Виправити неоптимальні рішення (зайві запити до бази даних, непотрібні цикли тощо)
Увага:
- index.js файл повинен експортувати instance Express серверу
tests
теку рухати не можна, все одно будуть використані оригінальні файли для тестування
Додаткові завдання:
- Під'єднати логер (будь-який на вибір). На кожен запит логувати:
- вхідні запити: url запиту, метод, час отримання запиту
- відповіді сервера: url запиту, метод, час обробки запиту, http код відповіді
- Під час запуску сервера:
- зробити валідацію чи всі змінні середовища вказані (якщо не всі — вивести повідомлення про помилку, завершити Node процес)
- зробити валідацію підключення до бази даних (якщо під'єднатися не вдалося - вивести повідомлення про помилку, завершити Node процес)
- Реалізувати graceful shutdown
- Налаштувати pre-commit hook, який буде запускати eslint
- Збереження функціональності проєкту
- Чистота, читабельність та якість коду
Ще один бал можна отримати за всі виконанні додаткові завдання.
Вдалого рефакторингу!