nodebook-api
v0.7.0
Published
Цей проєкт — це книжковий форум, який дозволяє користувачам переглянути книги з їх описом та відгуками від інших користувачів, і можливість вподобати улюблені книги.
Downloads
35
Readme
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
📈 Діаграма компонентів (Сачко Максим)

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

Лабораторна робота №4
Із самого початку розробки вирішили відразу підключити базу данних, бо вважали це зручнішим.
Проте трохи використали статичні дані, у цьому Pull Request (Сачко Максим) продемонстровано:
- статичні файли
- мокнутий користувач на сторінці логіну (Титянюк Артем)
Лабораторна робота №5
Для кожної сторінки підключили API та використовували БД:
Сачко Максим
Титянюк Артем
Лабораторна робота №6
Тести писали для кожної сторінки.
Сачко Максим
- сторінка каталогу та книги
- сторінка книги
Титянюк Артем
- сторінка авторизації
- сторінка профілю
- сторінка контактів
Лабораторна робота №7
Титянюк Артем
Сачко Максим
Лабораторна робота №8
Аніліз сторінок (не авторизований користувач)
Титянюк Артем
Сторінка контактів
Сторінка авторизації
Сторінка профілю
Сачко Максим
Сторінка каталогу (головна сторінка)
Сторінка книги
Проаналізувавши ці сторінки, виявили недоліки у кількох аспектах:
- відображення великого контенту йде з затримкою
- деякі кнопки не мають доступних для зчитування назв
- використання
<html lang="ua">, який не має дійсного значення в нашому випадку - недостатність контрастність кольорів в інтерфейсі
- відсутність файлу robots.txt для пошукових систем
Аніліз сторінок (авторизований користувач)

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

Вирішення проблем
Зробили разом певну роботу, щоб позбутися проблем з ефективністю, оптимізацією пошукових систем та доступністю:
Лабораторна робота №9
Після аналізу ми вирішили, що модуль з api був найбільш проблематичним та потребував рефакторингу.
Титянюк Артем
- абстрагував його і зробив рефакторинг: commit.
Сачко Максим
- зробив окремий репозиторій та зробив ще один невеликий рефакторинг: репозиторій
- опублікував бібліотеку в npm як: nodebook-api
- пробрав модуль з проекту та замінив бібліотекою: commit.
Проєкт увесь написаний на TypeScript.
