Пришло время показать, что я делал последний месяц: chat.ignat.co

Мне предложили тестовое задание, в котором нужно было сделать мессенджер в реальном времени. По условию, приложение должно быть сделано на следующем стеке:

  • Сервер на express,
  • База данных mongodb,
  • Фронтенд на react или angular.

Из вышеперечисленного, на тот момент, я имел отдаленное представление только про экспресс, поэтому поначалу не знал даже с какой стороны подступиться к заданию. Вначале стал вникать по отдельности в нужные библиотеки.

В первую очередь пришлось разобраться, как сделать в приложении взаимодействие нескольких юзеров в реальном времени. Нагуглил для этого библиотеку socket.io. У них на сайте хороший туториал как раз на примере чата.

Потом начал думать, как прикрутить чат к базе данных. Использовал для этого облачный сервис mongodb atlas, что сильно упростило жизнь. Создаешь через веб-интерфейс базу и коннектишься к ней из своего приложения через mongoose, очень удобно.

Когда приложение более-менее заработало, нужно было переписать фронт на специально предназначенном для этого фреймворке, для чего начал изучать реакт. В этом помогли хекслетовский курс и официальный гайд. Сам реакт оказался не таким страшным, как я себе представлял. Курс на хекслете получилось пройти примерно за неделю. В предыдущих курсах про асинхронность и генераторы столько же времени иногда уходило на отдельные задания.

В конце итоговое задеплоил на digital ocean при помощи nginx и pm2. К сожалению, роскомнадзор на днях начал банить их адреса, из-за чего мой чатик может быть недоступен читателям в РФ. Похоже, что следующим навыком в обучении веб-разработке придется осваивать умение противостоять блокировкам.