Минск
Войти
 

Обучение Backend-разработке

Организатор: IT-Incubator
Минск, пр-т Независимости 95-1

Длительность: 12 месяцев
Начало: 20 мая 2024 ещё даты
17 июня 2024
Эффективное обучение каждого студента до трудоустройства. Без жестких дедлайнов.

Богатая программа, командная работа, «взрослый» стек: NodeJS, Express, NestJS, Swagger, MongoDB, PostgreSQL, Microservices, RabbitMQ, WebSocket, основы DevOps (docker + kubernetes + jenkins), SOLID, Hexagonal Architecture, SAGA, основы фронтенда.

Требуемый начальный уровень знаний - база по sql, js; знать, уметь, пользоваться GitHub, Codewars, freeCodeCamp; пользователь компьютера на хорошем уровне.
Человек в группе: 30.
 

Результат / будет знать, уметь

  • По окончании курса будете знать, уметь: NodeJS, Express, NestJS, Swagger, MongoDB, PostgreSQL, Microservices, RabbitMQ, WebSocket, основы DevOps (docker + kubernetes + jenkins), SOLID, Hexagonal Architecture, SAGA, основы фронтенда.

    Контакты

    +375 29 134 1548 A1

    it-incubator.io

    В начале беседы сообщите, что нашли информацию на Все Курсы Бай.

    Программа

    Спринт 118:00

    <Неделя 1>
    Введение в back-end разработку
    - Установка окружения и создание простого Express приложения с использованием TypeScript и Nodemon
    - Развертывание простого TypeScript Express приложения на Versel
    - Routing для обработки GET, POST, PUT и DELETE запросов в Express приложении. Использование различных типов HTTP-запросов для обработки CRUD-операций
    - End-to-end тестирование приложения
    - Swagger документация
    - JS: Типы данных. Особенности объектов как ссылочного типа данных. Копирование объектов. Синтаксис деструктуризации
    <Неделя 2>
    DataAccessLayer, Middleware и валидация данных
    - Реализация базовых операций CRUD (Create, Read, Update, Delete) в репозиториях
    - Express Middleware и принцип цепочки обязанностей (Chain of Responsibility)
    - Валидация входных данных с использованием express-validator
    - Реализация Basic Authorization для аутентификации и авторизации запросов
    - Проверка учетных данных пользователя с использованием Basic Authorization
    - JS: Методы массивов map, filter, sort и др. “Полифилы” методов массивов. Array. prototype как “хранилище” методов. + практика
    <Неделя 3>
    MongoDB, CRUD операции и асинхронное программирование
    - Введение и установка MongoDB
    - Использование CRUD операций для работы с данными в MongoDB
    - Работа с MongoDB через командную оболочку и графический инструмент Studio 3T
    - Изучение Promise в Node.js и асинхронного программирования
    - Применение async-await для написания удобного асинхронного кода в Node.js
    - Взаимодействие между Node.js и MongoDB
    - Использование официального MongoDB драйвера для Node.js для выполнения CRUD операций
    - JS: Методы массивов slice, splice, toSpliced, reduce + практика
    <Неделя 4>
    Бизнес-логика, пагинация, сортировка, CQS/CQRS и слои приложения
    - Изучение Business Logic Layer для отделения бизнес-логики от слоя доступа к данным
    - Реализация пагинации и сортировки для эффективной работы с большими объемами данных
    - Понимание принципов CQS и CQRS для разделения команд и запросов
    - Реализация QueryRepository для разделения операций чтения и записи данных
    - Освоение основ data-mapping для преобразования данных между слоями приложения
    - Организация слоев приложения для более модульной и масштабируемой архитектуры
    - JS: Синтаксис вычисляемых свойств объекта (“ассоциативный массив“), map-set, object. keys, object. values, object. entries

    Сприн 218:00

    <Неделя 1>
    Хеширование паролей, bcrypt и проверка паролей
    - Введение в безопасность паролей и необходимость их хеширования
    - Изучение метода хеширования паролей с использованием bcrypt
    - Разработка и реализация процесса хеширования паролей
    - Понимание процесса проверки правильности введенного пароля
    - Реализация проверки пароля с использованием bcrypt
    - Обзор распространенных практик и подходов к обеспечению безопасности паролей
    - JS: Обработка событий: интерфейс Event, оnclick и addEventListener (особенности использования), “всплывающие” события, свойства target и currentTarget, методы stopPropagation и preventDefault. Паттерны проектирования. Observer, Publisher-Subscriber. Примеры использования
    <Неделя 2>
    JWT, HTTP заголовки, авторизация с использованием токена Bearer
    - Введение в JWT (JSON Web Tokens) и их роль в аутентификации и авторизации
    - Генерация и проверка JWT токенов для безопасной передачи информации
    - Изучение HTTP заголовков и их использование в веб-приложениях
    - Использование заголовка Authorization для передачи авторизационных данных
    - Реализация авторизации с использованием токена Bearer в HTTP заголовке
    - Обзор распространенных практик и подходов к обеспечению безопасности при работе с JWT и авторизацией
    - JS: Область видимости переменных. Замыкание: пример счетчик, почему и как работает. Сборка мусора. Рекурсия и стек вызова
    <Неделя 3>
    Nodemailer, SMTP, регистрация аккаунта и подтверждение по электронной почте
    - Изучение Nodemailer и настройка SMTP для отправки электронных писем
    - Разработка функциональности регистрации аккаунта
    - Генерация уникального кода подтверждения
    - Отправка письма с кодом подтверждения
    - Реализация механизма подтверждения аккаунта
    - Обработка запросов подтверждения и обновление статуса аккаунта
    - JS: Promise. Для чего нужны, какую проблему решают. Создание собственного Promise. Все тонкости работы с методами . then . catch . finally
    <Неделя 4>
    JWT Refresh Token
    - Изучение концепции Refresh Token в связке с JWT
    - Разработка механизма обновления токена для продления срока действия
    - Генерация и сохранение Refresh Token в безопасном хранилище
    - Проверка валидности Refresh Token перед обновлением
    - Обновление и выдача нового JWT при использовании Refresh Token
    - Реализация логики обработки и обновления токенов в приложении
    - Обзор распространенных практик и подходов к обновлению JWT с использованием Refresh Token
    - JS: Promise. Работа с методами . then . catch . finally на реальных примерах. Специальный синтаксис async/await. Обработка ошибок с помощью try и catch. Статические методы класса Promise

    Сприн 318:00

    <Неделя 1>
    Multi devices и ограничения по IP
    - Изучение стратегий работы с несколькими устройствами пользователей в серверном приложении
    - Разработка механизма аутентификации и управления сеансами для поддержки нескольких устройств
    - Реализация ограничений по IP для защиты серверного приложения от brute force атак
    - Использование middleware для проверки и ограничения IP-адресов
    - Обработка и логирование попыток доступа с недопустимых IP-адресов
    - JS: Структуры данных Stack/Queue. Событийный цикл (Eventloop): микрозадачи и макрозадачи. Решение практических задач
    <Неделя 2>
    Mongoose и схемы
    - Изучение Mongoose - объектно-ориентированной библиотеки для работы с MongoDB в Node.js
    - Освоение концепции схем в Mongoose, которые определяют структуру и типы данных моделей
    - Создание моделей с использованием схем в Mongoose для удобного взаимодействия с базой данных MongoDB
    - Реализация CRUD операций (создание, чтение, обновление, удаление) с использованием Mongoose
    - Изучение возможностей Mongoose для валидации данных, настройки связей между моделями и других расширенных функций
    - Разработка и тестирование функциональности с использованием Mongoose и схем
    - JS: Ключевое слово ‘this’, работа с this в функциях и методах объектов. Потеря контекста. Методы функций call, apply, bind. This в функциях конструкторах
    <Неделя 3>
    Введение в понятия DTO, POJO, анемичной модели и класса. Работа с объектными зависимостями и внедрение зависимостей (DI)
    - Изучение DTO, POJO, Anemic Model и Transaction Script в объектно-ориентированном проектировании
    - Понимание зависимостей объектов и их влияния на приложение
    - Введение в Dependency Injection (DI) и использование Composition Root для управления зависимостями
    - Применение принципов объектно-ориентированного проектирования и управления зависимостями в практике
    - JS: Классы в JS. Для чего нужны, какие проблемы решают. Как создать собственный класс. Для чего нужна функция constructor() в классах. Приватность в классах. Геттеры и сеттеры (get/set). Статические методы класса
    <Неделя 4>
    Inversion of Control (IoC) и фреймворк Inversify. Введение в ООП
    - Введение в IoC и роль фреймворка Inversify
    - Изучение основных компонентов Inversify: контейнеры, привязки и разрешение зависимостей
    - Создание и настройка контейнера Inversify
    - Применение IoC с помощью Inversify для повышения гибкости и тестируемости кода
    - Введение в ООП. Знакомство с принципами DDD
    - JS: Прототипы в JS, proto/prototype. Все ли в JS объекты? Разница между proto и prototype. Прототипное наследование

    Сприн 418:00

    <Неделя 1>
    Nest. js - создание проекта, контроллеры, маршрутизация и сервисы
    - Введение в Nest. js - фреймворк для разработки масштабируемых и модульных приложений на Node.js
    - Создание нового проекта с использованием Nest. js CLI и настройка базовой структуры проекта
    - Изучение концепции контроллеров в Nest. js и создание обработчиков HTTP-запросов
    - Определение маршрутов и настройка маршрутизации в приложении Nest. js
    - Создание и использование сервисов для инкапсуляции бизнес-логики в приложении
    - Разработка и тестирование функциональности с использованием контроллеров, маршрутизации и сервисов в Nest. js
    - JS: Разработка игры на чистом JavaScript + ООП, тесты, WebSocket
    <Неделя 2>
    Nest. js - валидация, обработка исключений и использование guards, Passport. js, tests
    - Изучение возможностей валидации данных в Nest. js с использованием библиотеки class-validator
    - Применение пайпов (pipes) в Nest. js для обработки и преобразования данных
    - Изучение ValidationPipe для автоматической валидации входных данных в контроллерах
    - Обработка исключений с помощью Exception Filters в Nest. js для управления ошибками в приложении
    - Использование глобального фильтра (useGlobalFilter) для единообразной обработки исключений во всем приложении
    - Изучение гвардов (guards) в Nest. js и внедрение Auth Guard для реализации авторизации и защиты маршрутов
    - Аутентификация с использованием различных стратегий: Local, JWT, Basic. Использование Passport. js
    - Практическое применение интеграционного тестирования с использованием базы данных
    - Изучение концепций mock и spy для создания контролируемых и независимых тестовых сред
    - JS: Разработка игры на чистом JavaScript + ООП, тесты, WebSocket
    <Неделя 3>
    Nest. js - DI, области видимости, environment variables, CQRS (UseCase, CommandHandler)
    - Переменные окружения, process. env, environment variables
    - Nest сonfiguration
    - Применение паттерна UseCase и обработка команд с помощью CommandHandler в Nest CQRS
    - JS: Разработка игры на чистом JavaScript + ООП, тесты, WebSocket
    <Неделя 4>
    Dependency Injection (DI) и областей видимости в Nest. js, CI/CD: GitHub Actions
    - Dependency Injection (DI) и областей видимости в Nest. js (scopes)
    - CI/CD: GitHub Actions
    - JS: Разработка игры на чистом JavaScript + ООП, тесты, WebSocket

    Спринт 518:00

    <Неделя 1-4>
    Изучение SQL и использование инструментов для работы с ним
    - Ознакомление с основами SQL, включая язык запросов и манипуляции данными
    - Проектирование базы данных (связи между таблицами)
    - Использование инструмента PGAdmin для работы с PostgreSQL
    - Практическое применение "Raw SQL" для выполнения запросов и манипуляций с данными в базе данных. Select, Where, Order by, Offset, Limit
    - Подзапросы, группировки, агрегирующие функции

    Спринт 618:00

    <Неделя 1>
    Изучение SQL запросов с использованием TypeORM
    - Погружение в SQL запросы с использованием TypeORM и изучение их различных типов, включая SELECT, INSERT, UPDATE, DELETE
    - Применение фильтров, сортировки и ограничений для точной выборки данных из базы данных
    - Использование агрегатных функций для выполнения расчетов и анализа данных
    - Работа с JOIN для объединения данных из разных таблиц
    <Неделя 2>
    Нормальные формы
    - Теория нормализации баз данных
    - Денормализация, для чего и в каких случаях может применяться
    <Неделя 3>
    Миграции в базе данных
    - Введение в миграции и их использование в TypeORM для управления изменениями схемы базы данных
    <Неделя 4>
    Изучение индексов в базах данных
    - Разбор понятия индексов и их важности для оптимизации запросов в базах данных
    - Изучение типов индексов и их особенностей
    - Ознакомление с индексами в SQL базах данных
    - Примеры использования индексов в SQL базах данных для оптимизации запросов

    Спринт 718:00

    <Неделя 1-4>
    Блокировки, версионирование и транзакции в SQL
    - Блокировки для обеспечения целостности данных при параллельных операциях
    - Версионирование данных для контроля доступа и обновления информации
    - Применение транзакций для гарантии согласованности данных и атомарности операций
    - Уровни изоляции транзакций и их влияние на конкурентность и целостность данных

    Спринт 8

    <Неделя 1>
    DDD, сущности предметной области, события предметной области, CQRS
    - DDD: Методика проектирования сложных систем
    - Сущности предметной области: Ключевые понятия и бизнес-правила модели
    - События предметной области: Изменения состояния, взаимодействие между компонентами
    - CQRS: Разделение операций записи и чтения данных
    <Неделя 2>
    Обработки ошибок, паттерн Notifications
    - Валидация данных и обеспечение их корректности
    - Обработка ошибок и стратегии обработки исключений
    <Неделя 3-4>
    SOLID, GRASP, паттерны
    - SOLID, GRASP и другие принципы проектирования программного обеспечения, обеспечивающие гибкость и поддержку расширяемости кода

    Спринт 9

    <Неделя 1>
    AWS files, Swagger
    - Работа с файлами в AWS
    <Неделя 2>
    telegramAPI
    - Работа с Telegram API. Вы узнаете, как взаимодействовать с Telegram-платформой, отправлять сообщения, управлять ботами и другие функции API
    <Неделя 3>
    paymentAPI
    - Изучение Payment API. Вы будете исследовать возможности интеграции платежных систем (Stripe), обработку платежей и управление финансовыми транзакциями в вашем приложении
    <Неделя 4>
    recaptcha
    - Вы будете изучать ReCaptcha - механизм защиты от автоматических ботов и спама

    Карьерный бустер

    1. Будете разрабатывать учебный продукт “INCTAGRAM” в полноценной команде, как на реальном проекте.
    2. Наши HR-специалисты помогут улучшить ваше резюме, портфолио и сопроводительное письмо, а также получите советы как проходить рекрутерские интервью.
    3. Сможете участвовать в сессиях с индивидуальным разбором вашей ситуации по поиску работы от карьерного ментора.
    4. Подготовитесь к собеседованиям: поучаствуете в тренировочных собеседованиях и узнаете, насколько хорошо вы подготовлены к трудоустройству.
    5. Мы отправим вас на реальный стартап, где вы сможете получить коммерческий опыт или оффер.

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

    Пользуясь сайтом вы принимаете Условия пользования сайтом. Для лучшего пользовательского опыта используются файлы cookies. Подробнее

    Файлы cookies (куки) – это небольшие текстовые файлы, которые временно сохраняются на вашем устройстве, когда вы посещаете веб-сайты. Они помогают веб-сайтам запоминать ваши предпочтения, интересы и действия, чтобы улучшить ваш опыт просмотра. Файлы cookies также могут защищать вас от мошенничества и улучшать безопасность веб-сайтов. Вы можете управлять файлами cookies в настройках вашего браузера или устройства.

    У нас на сайте файлы cookies используются для сохранения пользовательских настроек и для маркетинговых целей.

    Вы всегда можете удалить файлы cookies. Например, перейдите в настройки конфиденциальности вашего браузера или в быстром поиске настроек введите 'cookie' или 'куки', вам должно вывести опции управления данными, где вы сможете при необходимости очистить файлы.