Як скоротити час та стартанути NestJS проект якнайшвидше: про наше рішення

💡 Усі статті, обговорення, новини про Front-end — в одному місці. Приєднуйтесь до Front-end спільноти!

NestJS boilerplate — це проект, який містить більшість необхідних бібліотек та рішень, таких як аутентифікація, переклади, налаштування бази даних, тести тощо, для швидкого запуску вашого проекту на NestJS за допомогою класичного підходу REST API.

Створений у серпні 2020 року, зараз він має понад 900 зірочок на Github і використовується багатьма програмістами для економії часу на налаштування нового проекту та розробку самих базових функцій.

Мотивація

В нашій компанії Brocoders ми досить часто починаємо нові проекти з нуля. Наш основний технологічний стек на бекенді — це TypeScript та NestJS. Однак створення проекту з нуля кожного разу може зайняти багато часу, включаючи такі речі, як налаштування бази даних, вхід, реєстрація, завантаження файлів тощо. І це ті речі, які ми повторюємо із проекта в проект. Багато хто бере напрацювання із попередніх проектів і частково копіює їх. Але це не завжди зручно, у кожного програміста є свої напрацювання, а рішення в них стають застарілими. Так ми вирішили зробити свій Boilerplate.

На той час рішень, які були б стабільні та готові до продакшну, було не так багато, тому ми вирішили зробити свій велосипед. Нещодавно ми аналізували, що зараз доступно із аналогічних репозитаріїв і нарахували більше 30 бойлерплейтів на Awesome NestJs List. Попри те, здається, ми можемо навіть трішки порадіти, бо як мінімум нам наше рішення подобається найбільше :-)

Детальніше цей аналіз, порівняння по функціям та висновки по результатам код ревью можно почитати англійською на Dev.to.

За нашим підрахункам, іноді використання бойлерплейту дозволяє скоротити початок проекту на 2-4 тижня, в залежності від кваліфікації програміста, від складності проекту та інших факторів.

Модулі та функції

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

  • Database (PostgreSQL, TypeORM)
  • Seeds (тестові дані для проекту)
  • Config Service (@nestjs/config).
  • Mailing (nodemailer, u/nestjs-modules/mailer).
  • Вхід, реєстрація та відновлення паролю через email
  • Вхід та реєстрація через Oauth (Apple, Facebook, Google, Twitter)
  • Admin та User ролі
  • Serialization
  • Переклади I18N (nestjs-i18n)
  • Завантаження файлів: підтримується як локальне зберігання так і Amazon S3
  • Swagger для документації API
  • E2E та unit тести
  • Docker
  • CI (Github Actions)

Швидкий початок

Для того щоб розгорнути та почати новий проект, необхідно зробити декілька кроків:

  1. Склонувати репозиторій
    git clone --depth 1 [email protected]:brocoders/nestjs-boilerplate.git my-app
  2. Перейти у директорію та скопіювати env-example у .env
    cd my-app/
    cp env-example .env
  3. Змінити DATABASE_HOST=postgres на DATABASE_HOST=localhost. Змінити MAIL_HOST=maildev на MAIL_HOST=localhost
  4. Запустити додатковий контейнер
    docker compose up -d postgres adminer maildev redis
  5. Встановити залежності
    npm install
  6. Запустити міграції
    npm run migration:run
  7. Завантажити тестови дані
    npm run seed:run
  8. Запустити додаток у dev моді
    npm run start:dev
  9. Відкрити localhost:3000

Підсумок

Спробуйте наш бойлерплейт, він досить простий, підтримується нашою компанією та добре написаний (я сподіваюся 🙂)

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

Респект і повага головному розробнику: Владу Щепотіну 🇺🇦

👍ПодобаєтьсяСподобалось16
До обраногоВ обраному4
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Так,це дійсно зручно — скористатись крутим бойлерплейтом, що вміщує вже необхідні модулі і фунції, а зекономлений час витратити на розробку функціоналу свого проекту👍🏼 Дякую!

Підписатись на коментарі