npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

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

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

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.