Skip to content

Latest commit

 

History

History
62 lines (43 loc) · 4.84 KB

Task_UA.md

File metadata and controls

62 lines (43 loc) · 4.84 KB

Вітаю! Ти вже не з чуток знаєш про структуру backend, NodeJS та написання чистого, читабельного і якісного коду, але є одне "але"... Не всі проєкти, що будуть траплятися на твоєму шляху, будуть написані розробниками, які знають про це стільки ж


Задача

Відрефакторити проєкт, зберігши всю його функціональність (так-так, воно працює)

Деталі проєкту

  • Проєкт має тільки backend частину
  • Весь функціонал працює та, навіть, покритий тестами. Як запустити сервер та автотести ти дізнаєшся з README.md
  • На жаль, ніякої документації та описаних вимог до бізнес-логіки немає... Проте є код, а я кажуть: The code is the documentation

Нео, з фільму Матриця, сидить біля Провидиці та каже: "Кому потрібна документація, коли вмієш читати код"

  • Окрім запуску автотестів, розібратись з бізнес-логікою тобі допоможе Postman колекція. Ти можеш імпортувати її (не забудь також postman env файл) до себе у Postman, щоб побачити приклади HTTP запитів та використовувати їх для мануального тестування.

Технології:

Що необхідно зробити:

  1. Розбити код на шари (шар бізнес-логіки, шар доступу до даних тощо)
  2. Створити структуру файлів
  3. Позбутися дублювання коду
  4. Позбутися використання антипатернів
  5. Виправити неоптимальні рішення (зайві запити до бази даних, непотрібні цикли тощо)

Увага:

  • index.js файл повинен експортувати instance Express серверу
  • tests теку рухати не можна, все одно будуть використані оригінальні файли для тестування

Додаткові завдання:

  1. Під'єднати логер (будь-який на вибір). На кожен запит логувати:
    • вхідні запити: url запиту, метод, час отримання запиту
    • відповіді сервера: url запиту, метод, час обробки запиту, http код відповіді
  2. Під час запуску сервера:
    • зробити валідацію чи всі змінні середовища вказані (якщо не всі — вивести повідомлення про помилку, завершити Node процес)
    • зробити валідацію підключення до бази даних (якщо під'єднатися не вдалося - вивести повідомлення про помилку, завершити Node процес)
  3. Реалізувати graceful shutdown
  4. Налаштувати pre-commit hook, який буде запускати eslint

Що буде оцінюватися:

  • Збереження функціональності проєкту
  • Чистота, читабельність та якість коду

Найбільший бал: 9.

Ще один бал можна отримати за всі виконанні додаткові завдання.


Вдалого рефакторингу!

Кругообіг процесу рефакторингу