Як скоротити час та стартанути NestJS проект якнайшвидше: про наше рішення
NestJS boilerplate — це проект, який містить більшість необхідних бібліотек та рішень, таких як аутентифікація, переклади, налаштування бази даних, тести тощо, для швидкого запуску вашого проекту на NestJS за допомогою класичного підходу REST API.
Створений у серпні 2020 року, зараз він має понад 900 зірочок на Github і використовується багатьма програмістами для економії часу на налаштування нового проекту та розробку самих базових функцій.
Мотивація
В нашій компанії Brocoders ми досить часто починаємо нові проекти з нуля. Наш основний технологічний стек на бекенді — це TypeScript та NestJS. Однак створення проекту з нуля кожного разу може зайняти багато часу, включаючи такі речі, як налаштування бази даних, вхід, реєстрація, завантаження файлів тощо. І це ті речі, які ми повторюємо із проекта в проект. Багато хто бере напрацювання із попередніх проектів і частково копіює їх. Але це не завжди зручно, у кожного програміста є свої напрацювання, а рішення в них стають застарілими. Так ми вирішили зробити свій Boilerplate.
На той час рішень, які були б стабільні та готові до продакшну, було не так багато, тому ми вирішили зробити свій велосипед. Нещодавно ми аналізували, що зараз доступно із аналогічних репозитаріїв і нарахували більше 30 бойлерплейтів на Awesome NestJs List. Попри те, здається, ми можемо навіть трішки порадіти, бо як мінімум нам наше рішення подобається найбільше :-)
Детальніше цей аналіз, порівняння по функціям та висновки по результатам код ревью можно почитати англійською на Dev.to.
За нашим підрахункам, іноді використання бойлерплейту дозволяє скоротити початок проекту на
Модулі та функції
Ми зібрали найпопулярніші модулі та налаштування, які повторювались із проекта в проект і об’єднали їх у 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)
Швидкий початок
Для того щоб розгорнути та почати новий проект, необхідно зробити декілька кроків:
- Склонувати репозиторій
git clone --depth 1 [email protected]:brocoders/nestjs-boilerplate.git my-app
- Перейти у директорію та скопіювати
env-example
у.env
cd my-app/
cp env-example .env
- Змінити
DATABASE_HOST=postgres
наDATABASE_HOST=localhost
. ЗмінитиMAIL_HOST=maildev
наMAIL_HOST=localhost
- Запустити додатковий контейнер
docker compose up -d postgres adminer maildev redis
- Встановити залежності
npm install
- Запустити міграції
npm run migration:run
- Завантажити тестови дані
npm run seed:run
- Запустити додаток у dev моді
npm run start:dev
- Відкрити localhost:3000
Підсумок
Спробуйте наш бойлерплейт, він досить простий, підтримується нашою компанією та добре написаний (я сподіваюся 🙂)
Головне в наших планах на даний момент — покращити документацію та підтримувати всі залежності в актуальному стані. І якщо хтось має ще якісь ідеї або хоче стати контрибьютором — ми завжди раді зустріти нових друзів і прийняти ваші пул реквести.
Респект і повага головному розробнику: Владу Щепотіну 🇺🇦
1 коментар
Додати коментар Підписатись на коментаріВідписатись від коментарів