Skip to content

SachkoMaxim/nodebook-api-lib

Repository files navigation

Nodebook

📝 Опис проєкту

Цей проєкт — це книжковий форум, який дозволяє користувачам переглянути книги з їх описом та відгуками від інших користувачів, і можливість вподобати улюблені книги.

👨‍💻 Основні функції:

  • ✍️ Реєстрація та авторизація:

    • Реєстрація через логін і пароль (credentials).
  • 📋🔍 Фільтрування та пошук книг:

    • Користувачі можуть фільтрувати книги за жанрами.
    • Книги можна буде знайти за автором чи назвою у пошуковій системі.
  • 👍❤️ Вподобання:

    • Можливість поставити вподобання на улюблені книги.
    • Кожну вподобану книгу користувач може переглянути у своєму профілі.
  • 💬 Коментарі щодо книг:

    • Користувачі можуть залишити відгук (або коментар) щодо книги.
    • Користувачі зможуть переглянути опис книги та коментарі інших користувачів щодо неї.

💻 Технології

  • ⌨️ Backend:

    • Nest.js
    • MongoDB (база даних)
    • Jest (для тестування)
  • 🖥 Frontend:

    • Next.js
    • Tailwind CSS (для стилізації)
    • TypeScript
    • Jest (для unit та integration тестування)
    • Cypress (для e2e тестування)
  • 🤖 Інтеграції:

    • Nodemailer для надсилання повідомлень на пошту (а саме gmail).

Виконання лабораторних робіт

Лабораторна робота №1

Робили проєкт у команді:

  • Бонадренко Олександр, ІМ-22: Back-end
  • Титянюк Артем, ІМ-22: Front-end
  • Сачко Максим, ІМ-22: Front-end

Вирішили робити у різних репозиторіях Front-end та Back-end

Посилання на Back-end

Посилання на Front-end

Лабораторна робота №2

Лабораторна робота №3

📈 Діаграма компонентів (Сачко Максим)

Components diagram

📈 Use Case діаграма (Титянюк Артем)

Use Case Diagram

Лабораторна робота №4

Із самого початку розробки вирішили відразу підключити базу данних, бо вважали це зручнішим.

Проте трохи використали статичні дані, у цьому Pull Request (Сачко Максим) продемонстровано:

Лабораторна робота №5

Для кожної сторінки підключили API та використовували БД:

  • Сачко Максим

    • сторінка каталогу та книги commit
    • сторінка книги commit
  • Титянюк Артем

    • сторінка авторизації commit
    • сторінка профілю commit
    • сторінка контактів commit

Лабораторна робота №6

Тести писали для кожної сторінки.

  • Сачко Максим

    • сторінка каталогу та книги
    • сторінка книги
  • Титянюк Артем

    • сторінка авторизації
    • сторінка профілю
    • сторінка контактів
  • unit

  • integration

  • e2e

Лабораторна робота №7

Лабораторна робота №8

Аніліз сторінок (не авторизований користувач)

Проаналізувавши ці сторінки, виявили недоліки у кількох аспектах:

  • відображення великого контенту йде з затримкою
  • деякі кнопки не мають доступних для зчитування назв
  • використання <html lang="ua">, який не має дійсного значення в нашому випадку
  • недостатність контрастність кольорів в інтерфейсі
  • відсутність файлу robots.txt для пошукових систем

Аніліз сторінок (авторизований користувач)

Profile page analyze with auth

Коли ж ми аналізуємо ці сторінки з авторизованим користувачем, то зменшується показник оптимальних підходів, тому що починають використовуватися cookie, який приймаються сервера.

Warning cookie message

Вирішення проблем

Зробили разом певну роботу, щоб позбутися проблем з ефективністю, оптимізацією пошукових систем та доступністю:

Лабораторна робота №9

Після аналізу ми вирішили, що модуль з api був найбільш проблематичним та потребував рефакторингу.

  • Титянюк Артем

    • абстрагував його і зробив рефакторинг: commit.
  • Сачко Максим

    • зробив окремий репозиторій та зробив ще один невеликий рефакторинг: репозиторій
    • опублікував бібліотеку в npm як: nodebook-api
    • пробрав модуль з проекту та замінив бібліотекою: commit.

Проєкт увесь написаний на TypeScript.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors