Skip to content

YevhenChementsov/nodejs-course

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Читать на других языках: Українська, English.

nodejs

Node.js - Запускайте JavaScript повсюду.

Курс, позволяющий освоить работу с Node.js и получить навыки создания серверов, веб-приложений, инструментов командной строки и скриптов.


1. Ветка cli - Работа с файлами в Node.js. Создание консольного приложения (cli).

На этом этапе я научусь работать с файловой системой Node.js и создавать консольные приложения. Рассмотрю основные методы работы с файлами, чтение, запись, и модификацию данных. Создам CLI-приложение, которое будет выполнять определенные задачи, работая с файлами напрямую из командной строки.

Мое консольное приложение будет включать следующие функции:

  1. Вывод всех контактов в виде таблицы: Я научусь читать данные из файла и выводить их в удобном для чтения табличном формате.
  2. Поиск контакта по ID: Реализую возможность поиска конкретного контакта по его уникальному идентификатору.
  3. Добавление контакта: Добавлю функционал для создания нового контакта и сохранения его в файл.
  4. Удаление контакта: Создам функцию, позволяющую удалять контакт по его ID.
  5. Редактирование контакта: Обеспечу возможность редактирования данных существующего контакта.

Данный этап поможет мне укрепить навыки работы с файлами и управлением данными в Node.js, а также создать практическое приложение, которое можно использовать в реальных проектах.


Написание REST API для работы с коллекцией контактов.


2. Ветка rest-api-express - Работа с Express.js.

В этом разделе курса я познакомлюсь с основами создания REST API с использованием микрофреймворка Express.js. Мой проект будет представлять собой REST API для управления коллекцией контактов, который будет имитировать работу с базой данных.

В процессе обучения я реализую следующие задачи:

  1. Создание REST API: Освою построение маршрутов и контроллеров в Express.js для обработки HTTP-запросов, связанных с коллекцией контактов (получение, добавление, удаление, обновление данных).
  2. Функции-декораторы и функции-хелперы: Научусь создавать и использовать функции-декораторы для обработки общих задач, а также функции-хелперы для упрощения кода.
  3. Валидация данных с Joi: Внедрю пакет Joi для валидации данных, поступающих от пользователя, что позволит повысить надежность моего приложения.
  4. Тестирование с Postman: Попрактикуюсь в использовании Postman для тестирования и отладки моего REST API, проверяя работу всех его маршрутов и функций.

Этот раздел позволит мне глубже понять работу с Express.js и REST API, освоить ключевые принципы валидации данных и построения архитектуры веб-приложений, а также научиться тестировать свои решения с помощью Postman.


3. Ветка rest-api-mongodb - Работа с MongoDB с помощью графического редактора MongoDB Compass. Подключение к MongoDB с помощью Mongoose.

В этом разделе курса я изучу работу с базой данных MongoDB и библиотекой Mongoose, которая позволяет легко взаимодействовать с MongoDB в приложениях на Node.js.

В ходе обучения я выполню следующие задачи:

  1. Создание базы данных MongoDB: Узнаю, как развернуть MongoDB и создать базу данных для хранения информации.
  2. Установка MongoDB Compass: Научусь использовать MongoDB Compass — графический интерфейс для работы с базой данных, который упрощает просмотр, редактирование и управление данными.
  3. Подключение к базе данных с помощью Mongoose: Освою подключение моего Node.js приложения к MongoDB через Mongoose, что обеспечит удобный интерфейс для взаимодействия с базой данных.
  4. Создание Mongoose схемы и модели: Изучу процесс создания схемы и модели с использованием Mongoose, что позволит мне определять структуру данных и управлять ими в базе данных.

Этот раздел поможет мне освоить основы работы с MongoDB и Mongoose, научиться создавать и управлять схемами и моделями, а также подключать базу данных к моему приложению.


4. Ветка rest-api-auth - Аутентификация / Авторизация пользователя через JWT токен.

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

Основные задачи:

  1. Создание коллекции пользователей "users": Создам базовую коллекцию пользователей в базе данных для хранения информации о каждом пользователе.
  2. Аутентификация/авторизация через JWT токен: Реализую регистрацию и вход пользователей с использованием JWT токенов для защиты маршрутов и проверки подлинности пользователя.
  3. Разлогинивание пользователя: Добавлю возможность выхода пользователя из системы, аннулируя его токен.
  4. Получение данных текущего пользователя: Научусь извлекать информацию о текущем пользователе на основе его JWT токена.
  5. Пагинация контактов: Реализую функцию постраничного вывода контактов для удобной навигации по коллекции.
  6. Фильтрация контактов по полю "favorite": Добавлю возможность фильтрации контактов по параметру "favorite", что позволит пользователю работать с избранными контактами.
  7. Обновление подписки пользователя: Внедрю функционал изменения типа подписки пользователя (например, "starter", "pro", "business") для управления уровнем доступа к функциям.

Этот раздел поможет мне освоить создание надежной системы аутентификации и авторизации с JWT, управление данными пользователей и реализацию дополнительных функций для взаимодействия с контактами.


5. Ветка rest-api-multer - Загрузка файлов (аватарки) пользователя через Multer.

В этом разделе курса я изучу, как реализовать функционал загрузки файлов (аватарок) пользователей в приложении с использованием библиотеки Multer.

В процессе обучения я реализую следующие задачи:

  1. Загрузка аватарки через Multer: Освою настройку и использование библиотеки Multer для загрузки пользовательских файлов (аватарок) на сервер.
  2. Генерация стандартной аватарки через Gravatar: Научусь автоматически генерировать аватарку для нового пользователя при его регистрации с использованием сервиса Gravatar, если пользователь не загружает собственное изображение.
  3. Изменение размера аватарки с Jimp или Sharp: Реализую обработку изображений, изменяя размер загруженной аватарки с помощью библиотек Jimp или Sharp для оптимизации изображений перед сохранением.
  4. Unit-тесты для контроллера входа с Jest: Напишу unit-тесты для контроллера входа (login/signin), используя тестовую библиотеку Jest, чтобы убедиться в правильности работы логики авторизации.

Этот раздел поможет мне освоить работу с файлами в Express.js, научиться использовать различные библиотеки для обработки изображений, а также освоить основы тестирования контроллеров с помощью Jest.


6. Ветка rest-api-email-sendgrid - Верификация почты пользователя после регистрации с помощью сервиса-посредника SendGrid.

В этом разделе курса я изучу, как интегрировать отправку email с использованием сервиса SendGrid для подтверждения регистрации пользователей.

Основные задачи:

  1. Интеграция с SendGrid API: Научусь подключать сервис SendGrid к своему приложению и настраивать его для отправки email через API.
  2. Создание эндпоинта для верификации email: Реализую специальный маршрут (эндпоинт) для отправки пользователю письма с ссылкой для подтверждения его email-адреса.
  3. Первая отправка и повторная отправка email: Добавлю функционал для первой отправки письма с верификационной ссылкой сразу после регистрации, а также для повторной отправки письма в случае, если пользователь не подтвердил email с первой попытки.

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


7. Ветка rest-api-email-nodemailer - Верификация почты пользователя после регистрации с помощью почтового сервера заказчика, на примере портала 'meta ua'. Пакет Nodemailer.