Читать на других языках: Українська, English.
Курс, позволяющий освоить работу с Node.js и получить навыки создания серверов, веб-приложений, инструментов командной строки и скриптов.
1. Ветка cli - Работа с файлами в Node.js. Создание консольного приложения (cli).
На этом этапе я научусь работать с файловой системой Node.js и создавать консольные приложения. Рассмотрю основные методы работы с файлами, чтение, запись, и модификацию данных. Создам CLI-приложение, которое будет выполнять определенные задачи, работая с файлами напрямую из командной строки.
Мое консольное приложение будет включать следующие функции:
- Вывод всех контактов в виде таблицы: Я научусь читать данные из файла и выводить их в удобном для чтения табличном формате.
- Поиск контакта по ID: Реализую возможность поиска конкретного контакта по его уникальному идентификатору.
- Добавление контакта: Добавлю функционал для создания нового контакта и сохранения его в файл.
- Удаление контакта: Создам функцию, позволяющую удалять контакт по его ID.
- Редактирование контакта: Обеспечу возможность редактирования данных существующего контакта.
Данный этап поможет мне укрепить навыки работы с файлами и управлением данными в Node.js, а также создать практическое приложение, которое можно использовать в реальных проектах.
2. Ветка rest-api-express - Работа с Express.js.
В этом разделе курса я познакомлюсь с основами создания REST API с использованием микрофреймворка Express.js. Мой проект будет представлять собой REST API для управления коллекцией контактов, который будет имитировать работу с базой данных.
В процессе обучения я реализую следующие задачи:
- Создание REST API: Освою построение маршрутов и контроллеров в Express.js для обработки HTTP-запросов, связанных с коллекцией контактов (получение, добавление, удаление, обновление данных).
- Функции-декораторы и функции-хелперы: Научусь создавать и использовать функции-декораторы для обработки общих задач, а также функции-хелперы для упрощения кода.
- Валидация данных с Joi: Внедрю пакет Joi для валидации данных, поступающих от пользователя, что позволит повысить надежность моего приложения.
- Тестирование с Postman: Попрактикуюсь в использовании Postman для тестирования и отладки моего REST API, проверяя работу всех его маршрутов и функций.
Этот раздел позволит мне глубже понять работу с Express.js и REST API, освоить ключевые принципы валидации данных и построения архитектуры веб-приложений, а также научиться тестировать свои решения с помощью Postman.
3. Ветка rest-api-mongodb - Работа с MongoDB с помощью графического редактора MongoDB Compass. Подключение к MongoDB с помощью Mongoose.
В этом разделе курса я изучу работу с базой данных MongoDB и библиотекой Mongoose, которая позволяет легко взаимодействовать с MongoDB в приложениях на Node.js.
В ходе обучения я выполню следующие задачи:
- Создание базы данных MongoDB: Узнаю, как развернуть MongoDB и создать базу данных для хранения информации.
- Установка MongoDB Compass: Научусь использовать MongoDB Compass — графический интерфейс для работы с базой данных, который упрощает просмотр, редактирование и управление данными.
- Подключение к базе данных с помощью Mongoose: Освою подключение моего Node.js приложения к MongoDB через Mongoose, что обеспечит удобный интерфейс для взаимодействия с базой данных.
- Создание Mongoose схемы и модели: Изучу процесс создания схемы и модели с использованием Mongoose, что позволит мне определять структуру данных и управлять ими в базе данных.
Этот раздел поможет мне освоить основы работы с MongoDB и Mongoose, научиться создавать и управлять схемами и моделями, а также подключать базу данных к моему приложению.
4. Ветка rest-api-auth - Аутентификация / Авторизация пользователя через JWT токен.
На этом этапе я научусь реализовывать аутентификацию и авторизацию пользователей в приложении с использованием JWT токенов. Создам систему управления пользователями, добавив такие функции, как регистрация, вход, выход из системы, а также управление контактами.
Основные задачи:
- Создание коллекции пользователей "users": Создам базовую коллекцию пользователей в базе данных для хранения информации о каждом пользователе.
- Аутентификация/авторизация через JWT токен: Реализую регистрацию и вход пользователей с использованием JWT токенов для защиты маршрутов и проверки подлинности пользователя.
- Разлогинивание пользователя: Добавлю возможность выхода пользователя из системы, аннулируя его токен.
- Получение данных текущего пользователя: Научусь извлекать информацию о текущем пользователе на основе его JWT токена.
- Пагинация контактов: Реализую функцию постраничного вывода контактов для удобной навигации по коллекции.
- Фильтрация контактов по полю "favorite": Добавлю возможность фильтрации контактов по параметру "favorite", что позволит пользователю работать с избранными контактами.
- Обновление подписки пользователя: Внедрю функционал изменения типа подписки пользователя (например, "starter", "pro", "business") для управления уровнем доступа к функциям.
Этот раздел поможет мне освоить создание надежной системы аутентификации и авторизации с JWT, управление данными пользователей и реализацию дополнительных функций для взаимодействия с контактами.
5. Ветка rest-api-multer - Загрузка файлов (аватарки) пользователя через Multer.
В этом разделе курса я изучу, как реализовать функционал загрузки файлов (аватарок) пользователей в приложении с использованием библиотеки Multer.
В процессе обучения я реализую следующие задачи:
- Загрузка аватарки через Multer: Освою настройку и использование библиотеки Multer для загрузки пользовательских файлов (аватарок) на сервер.
- Генерация стандартной аватарки через Gravatar: Научусь автоматически генерировать аватарку для нового пользователя при его регистрации с использованием сервиса Gravatar, если пользователь не загружает собственное изображение.
- Изменение размера аватарки с Jimp или Sharp: Реализую обработку изображений, изменяя размер загруженной аватарки с помощью библиотек Jimp или Sharp для оптимизации изображений перед сохранением.
- Unit-тесты для контроллера входа с Jest: Напишу unit-тесты для контроллера входа (login/signin), используя тестовую библиотеку Jest, чтобы убедиться в правильности работы логики авторизации.
Этот раздел поможет мне освоить работу с файлами в Express.js, научиться использовать различные библиотеки для обработки изображений, а также освоить основы тестирования контроллеров с помощью Jest.
6. Ветка rest-api-email-sendgrid - Верификация почты пользователя после регистрации с помощью сервиса-посредника SendGrid.
В этом разделе курса я изучу, как интегрировать отправку email с использованием сервиса SendGrid для подтверждения регистрации пользователей.
Основные задачи:
- Интеграция с SendGrid API: Научусь подключать сервис SendGrid к своему приложению и настраивать его для отправки email через API.
- Создание эндпоинта для верификации email: Реализую специальный маршрут (эндпоинт) для отправки пользователю письма с ссылкой для подтверждения его email-адреса.
- Первая отправка и повторная отправка email: Добавлю функционал для первой отправки письма с верификационной ссылкой сразу после регистрации, а также для повторной отправки письма в случае, если пользователь не подтвердил email с первой попытки.
Этот раздел поможет мне освоить интеграцию с внешними почтовыми сервисами, научиться отправлять и отслеживать email-верификацию пользователей, а также реализовать повторную отправку сообщений для удобства пользователей.