Я разработал небольшое фулстек-приложение в качестве примера REST
+ WebSockets
бойлерплейта на NestJS
и Angular
. В приложении используется PostgreSQL
для хранения данных, Redis
для кэширования и Minio
для работы с файлами. Изначально целевой средой для развертывания был Kubernetes
, но для ускорения разработки и тестирования MVP
я решил использовать бесплатные облачные сервисы: Supabase
для инфраструктуры и Vercel
для деплоя бэкенда и фронтенда.
программирую…
Lite-версия мигратора Flyway для PostgreSQL на TypeScript

Так как я активно использую возможности Flyway
, такие как repeatable migrations
и callbacks
, и не хочу от них отказываться, а аналогов этих функций в других системах миграции нет, я решил написать собственный лёгкий клон Flyway
на Node.js
для PostgreSQL
.
Конвертация даты по временной зоне пользователя в «NestJS», а также ввод и отображение даты в «Angular»

В этой статье я расскажу о добавлении нового поля workUntilDate
с типом timestamp(6)
в таблицу Webhook
базы данных Webhook
.
На стороне фронтенда (в Angular
-приложении) для этого поля будет реализован удобный календарь с возможностью выбора времени.
Пользователи смогут задавать дату и время в своей временной зоне, тогда как бэкенд (NestJS
-приложение) будет сохранять введённые данные в базе данных в формате UTC+0
.
Кроме того, интерфейс календаря и другие элементы, отображающие даты, будут адаптированы под язык и временную зону пользователя.
Интеграция и сохранение выбранного языка пользователя в базу данных в фулстек-приложении на «Angular» и «NestJS»

Этот пост не претендует на масштабность, но поскольку я последовательно документирую все этапы разработки бойлерплейта в формате статей, решил описать и эту задачу.
Здесь я приведу пример миграции базы данных для добавления нового поля, а также покажу, как реализовать соответствующий функционал на бэкенде и фронтенде для изменения этого значения.
Поддержка временных зон в фулстек-приложении на основе NestJS и Angular: работа с REST и WebSockets

В этой статье я хотел бы поделиться своим опытом по внедрению поддержки временных зон в фулстек-приложение, построенное на NestJS
и Angular
. Мы узнаем, как сохранить настройки таймзоны пользователя в базе данных и правильно использовать их при взаимодействии с сервером через REST
и веб-сокеты.
Добавление поддержки нескольких языков в NestJS и Angular приложениях

В этой статье я добавлю поддержку нескольких языков в NestJS
и Angular
приложениях, для сообщений в ошибках, уведомлениях и данных полученных из базы данных.
Валидация REST-запросов в NestJS-приложении и отображение ошибок в формах Angular-приложения
В этом посте я добавлю в NestJS
-приложении валидацию REST
-запросов и их отображение в формах Angular
-приложения.
Получение серверного времени через WebSockets и отображение его в Angular-приложении
В этом посте я опишу как создать веб-сокетный стрим в бэкенде на NestJS
и подписаться на него из фронтенд приложения на Angular
.
Кэширование информации в Redis на NestJS
На каждом фронтенд запросе к бэкенду запрашивается информация по профилю пользователя из базы данных, это создает дополнительную нагрузку на базу данных и увеличивает время ответа бэкенда, для ускорения подобных запросов можно кэшировать ответ базы данных.
В этом посте я подключу Redis
к проекту и настрою кэширование данных через @nestjs-mod/cache-manager
.
Проект можно запускать в Docker Compose
и Kubernetes
.
Интеграция внешнего файлового сервера https://min.io в фулстек приложение на NestJS и Angular
В этой статье я подключу в проект внешний файловый сервер https://min.io и напишу дополнительные бэкенд и фронтенд модули для интеграции с ним.
Интеграция внешнего сервера авторизации https://authorizer.dev в фулстек приложение на NestJS и Angular
В этой статье я подключу в проект внешний сервер авторизации https://authorizer.dev и напишу дополнительные бэкенд и фронтенд модули для интеграции с ним.
Код будет собран для запуска через Docker Compose
и Kubernetes
.
Создание пользовательского интерфейса для модуля Webhook с помощью Angular

Cоздание таблички отображающей данные и формы для ее заполнения, интерфейсы строятся на компонентах от https://ng.ant.design, формы создаются и управляются с помощью https://formly.dev, для стилей используется https://tailwindcss.com, стейт машины нет.
Создание конфигурируемого Webhook-модуля для NestJS-приложении
В рамках этой статьи я опишу создание двух NestJS-модулей с различным способом конфигурирования: утилитарный модуль и бизнес-модуль со своей базой данных.
Добавляем lint-staged в NestJS и Angular приложения, включаем семантическое версионирование фронтенда

Так как версионирование через плагин nx-semantic-release
происходит путем анализа изменений по связанным Typescript
-импортам, то нам нужно минимизировать эти изменения, для этого в проект подключаем lint-staged
и добавляем строгости в Typescript
-код.
Семантическое версионирование NestJS и Angular приложений в NX-монорепозитории
Подключение и настройка nx-semantic-release
плагина для NX-монорепозитория для автоматического создания релиза с последующим деплоем приложений.
Доступ к сайту на NestJS и Angular по доменному имени c SSL — сертификатом в Kubernetes через Ingress
В Kubernetes очень легко настраивается работа с SSL, это наверное одна из главных причин почему я и начал им пользоваться, в этой статье я опишу простой сценарий его подключения.
Установка Kubernetes через MicroK8s и настройка деплоя NestJS и Angular приложений
Когда в команде нет DevOps - инженеров, но очень хочется задеплоить приложение в Kubernetes, можно легко это сделать с помощью https://microk8s.io, в данном посте я опишу как это сделать и открыть доступ к приложению на определенном порте.
Добавил возможность замены переменных окружения при запуске команды «Copy-Paste» в утилите «Rucken»

Я часто пользуюсь своей утилитой "rucken" по копированию файлов и директорий с кодом, но для генерации конфигураций деплоя по шаблонам я использовал баш скрипты, в которых помимо различных условий происходит копирование через команду "cp" и замена переменных через команду "sed".
На днях подумал и решил что часть с копированием и заменой можно убрать в утилиту "rucken" и тем самым оставить в баш скриптах только логики с условиями.
Ускорение деплоя NestJS и Angular с помощью общественных Github-раннеров и создания промежуточных Docker-образов

В этом посте я настрою сборку Docker-образов: Билдер NestJS и Angular приложений; Мигратор баз данных с помощью Flyway; Тест-раннер для запуска фронтенд и бэкенд E2E-тестов; Nginx c встроенной статикой Angular приложения; NestJS приложение.
Добавляем CI/CD конфиг для деплоя NestJS и Angular приложений на выделенный сервер с помощью GitHub Actions
Прописываем секретные переменные окружения в гитхаб.
Устанавливаем "GitHub Actions"-раннер на выделенный сервер.
Настраиваем workflow для "GitHub Actions".
Information
- Rating
- Does not participate
- Location
- Уфа, Башкортостан(Башкирия), Россия
- Date of birth
- Registered
- Activity