Цей проєкт — це книжковий форум, який дозволяє користувачам переглянути книги з їх описом та відгуками від інших користувачів, і можливість вподобати улюблені книги.
-
✍️ Реєстрація та авторизація:
- Реєстрація через логін і пароль (credentials).
-
📋🔍 Фільтрування та пошук книг:
- Користувачі можуть фільтрувати книги за жанрами.
- Книги можна буде знайти за автором чи назвою у пошуковій системі.
-
👍❤️ Вподобання:
- Можливість поставити вподобання на улюблені книги.
- Кожну вподобану книгу користувач може переглянути у своєму профілі.
-
💬 Коментарі щодо книг:
- Користувачі можуть залишити відгук (або коментар) щодо книги.
- Користувачі зможуть переглянути опис книги та коментарі інших користувачів щодо неї.
-
⌨️ Backend:
- Nest.js
- MongoDB (база даних)
- Jest (для тестування)
-
🖥 Frontend:
- Next.js
- Tailwind CSS (для стилізації)
- TypeScript
- Jest (для unit та integration тестування)
- Cypress (для e2e тестування)
-
🤖 Інтеграції:
- Nodemailer для надсилання повідомлень на пошту (а саме gmail).
Робили проєкт у команді:
- Бонадренко Олександр, ІМ-22: Back-end
- Титянюк Артем, ІМ-22: Front-end
- Сачко Максим, ІМ-22: Front-end
Вирішили робити у різних репозиторіях Front-end та Back-end
Посилання на Back-end
Посилання на Front-end
📈 Діаграма компонентів (Сачко Максим)
📈 Use Case діаграма (Титянюк Артем)
Із самого початку розробки вирішили відразу підключити базу данних, бо вважали це зручнішим.
Проте трохи використали статичні дані, у цьому Pull Request (Сачко Максим) продемонстровано:
- статичні файли
- мокнутий користувач на сторінці логіну (Титянюк Артем)
Для кожної сторінки підключили API та використовували БД:
-
Сачко Максим
-
Титянюк Артем
Тести писали для кожної сторінки.
-
Сачко Максим
- сторінка каталогу та книги
- сторінка книги
-
Титянюк Артем
- сторінка авторизації
- сторінка профілю
- сторінка контактів
-
Титянюк Артем
-
Сачко Максим
-
Титянюк Артем
-
Сторінка контактів
-
Сторінка авторизації
-
Сторінка профілю
-
-
Сачко Максим
-
Сторінка каталогу (головна сторінка)
-
Сторінка книги
-
Проаналізувавши ці сторінки, виявили недоліки у кількох аспектах:
- відображення великого контенту йде з затримкою
- деякі кнопки не мають доступних для зчитування назв
- використання
<html lang="ua">, який не має дійсного значення в нашому випадку - недостатність контрастність кольорів в інтерфейсі
- відсутність файлу robots.txt для пошукових систем
Коли ж ми аналізуємо ці сторінки з авторизованим користувачем, то зменшується показник оптимальних підходів, тому що починають використовуватися cookie, який приймаються сервера.
Зробили разом певну роботу, щоб позбутися проблем з ефективністю, оптимізацією пошукових систем та доступністю:
Після аналізу ми вирішили, що модуль з api був найбільш проблематичним та потребував рефакторингу.
-
Титянюк Артем
- абстрагував його і зробив рефакторинг: commit.
-
Сачко Максим
- зробив окремий репозиторій та зробив ще один невеликий рефакторинг: репозиторій
- опублікував бібліотеку в npm як: nodebook-api
- пробрав модуль з проекту та замінив бібліотекою: commit.
Проєкт увесь написаний на TypeScript.



