/ITMO-ICT-Backend-2022

Курс по бэкенд-разработке в среде Node.JS для Университета ИТМО

Primary LanguagePython

ITMO-ICT-Backend-2022

Курс по бэкенд-разработке в среде Node.JS для Университета ИТМО

Таблица с баллами

1. Введение в проблематику серверной веб-разработки

1.1. Знакомство со средой Node.JS, пакетным менеджером npm

Вводная презентация

ДЗ1 (срок: 11.03.2022, 23:59)

Задание:

  • Установка npm (8.1.0), node.js (16.13.0)
  • Инициализация npm-пакета
  • Установка express
  • Удаление express/попытка его обновить
  • Написание кастомной команды для npm, чтобы можно удалить express командой “npm run rme”

Необходимо сделать отчёт по шаблону

1.2. Знакомство с микрофреймворком Express

1.3. Знакомство с ORM Sequelize

Презентация Express + Sequelize

Документация Express Документация Sequelize Документация sequelize-cli

Пример, который делали на паре

ДЗ2 (срок 25.03.2022, 23:59)

Задание:

  • Продумать свою собственную модель пользователя
  • Реализовать набор из CRUD-методов для работы с пользователями средствами Express + Sequelize
  • Написать запрос для получения пользователя по id/email

Необходимо сделать отчёт по шаблону

1.4. Typescript: основы языка

1.5. Автоматизация рутинных действий средствами Makefile

Презентация "Основы TypeScript, работа с Makefile" Презентация "Основы TypeScript, Sequelize + TypeScript"

Статья по основам синтаксиса на Хабре
Статья на Nuances of Programming
Карманная книжка по TS
Видео от Хекслет про утилиту make
Makefile для самых маленьких, но это больше про C
Введение в make: история

Пример, который делали на паре

Источники по поводу использования typescript в ORM:

Документация пакета sequelize-typescript
Мануал по использованию typescript внутри sequelize
Документация TypeORM (можно использовать в качестве альтернативы Sequelize)

ЛР1 (срок: 08.04.2022, 23:59)

Нужно написать свой boilerplate на express + sequelize / TypeORM + typescript.

Должно быть явное разделение на:

  • модели
  • контроллеры
  • роуты
  • сервисы для работы с моделями (реализуем паттерн “репозиторий”)

Пример: https://github.com/kantegory/express-sequelize-boilerplate

Другие примеры можно поискать на github, набрав в поиске: "express boilerplate".

ДЗ3 (срок: 01.04.2022, 23:59)

Составьте Makefile, который будет автоматизировать ваши рутинные действия, такие как:

  • проведение миграций через sequelize;
  • запуск приложения;
  • установка зависимостей и сборка приложения.

2. Тестирование, разработка и документирование RESTful API

2.1 REST, RESTful, SOAP, GraphQL

Презентация: REST, RESTful, SOAP, GraphQL
Видео

ЛР2 (срок: 22.04.2022, 23:59)

В рамках данной лабораторной работы Вам предложено выбрать один из нескольких вариантов. Выбранный вариант останется единым на весь курс и будет использоваться в последующих лабораторных работах.

По выбранному варианту необходимо будет реализовать RESTful API средствами express + typescript (используя ранее написанный boilerplate).

Доступные варианты
  1. Платформа для проведения онлайн-хакатонов (пример: https://devpost.com)

Есть несколько сущностей: жюри хакатона, участники, главный администратор, кураторы задач. У участников есть возможность выбрать одну из задач (регистрируется и имеет доступ к системе только капитан команды), после выбора задачи капитан может предложить решение, скачать какие-то файлы, которые ему предложены, посмотреть на ссылки, которые есть в задаче.

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

Капитан при регистрации заполняет только свои учётные данные, после в кабинете команды — он может заполнить данные по каждому участнику, название команды и какой-нибудь условный девиз/описание.

У главного админа есть доступ ко всему, но он не может добавлять команды и редактировать их решения. Так же, не имеет права оценивать решения участников. Только просматривать. Ещё он может создавать задачи, которые потом будут дополнять кураторы. Ну и назначать кураторов на задачи, разумеется.

Поскольку этот вариант является довольно объёмным и сложным — для его выполнения можно объединиться в команды по 2-3 человека, но нужно об этом заранее предупредить.

  1. Платформа для поиска и покупки авиабилетов (пример: https://aviasales.ru)
  • Вход

  • Регистрация

  • Страница билетов пользователя

  • Страница для поиска билетов с возможностью выбора пунктов вылета и прилёта (доступные билеты представлены списком в виде карточек с указанием времени, пунктов прилёта и вылета, стоимости билета и кнопки "купить", при нажатии на которую открывается модальное окно с возможностью подтверждения оплаты, после успешной покупки билет отображается на странице из пункта 3)

  1. Платформа для поиска и бронирования номера в отеле/квартире/хостеле (https://airbnb.com)
  • Вход

  • Регистрация

  • Страница бронирований пользователя

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

  1. Платформа для поиска профессиональных мероприятий (пример: https://www.meetup.com/ru-RU/)
  • Вход

  • Регистрация

  • Поиск мероприятия (фильтрации по типу мероприятия, месту проведения)

  • Календарь ближайших мероприятий

  • Промо-страница для организаторов мероприятия

  • Личный кабинет пользователя со списком мероприятий, на которые он записывался

  1. Сайт криптобиржи (пример: https://www.coinbase.com/ru/)
  • Вход

  • Регистрация

  • Портфель пользователя с указанием различных криптовалют и их количеством

  • Графики роста криптовалют

  • Поиск по криптовалютам с возможностью фильтрации по дате добавления на биржу

  1. Любое API, которое вам интересно реализовать

Да, всё верно. Вы можете предложить свой вариант, необходимо отдельно его согласовать со мной.

Он обязательно должен включать в себя следующие страницы:

  • Вход

  • Регистрация

  • Личный кабинет пользователя

  • Страница для поиска с возможностью фильтрации

2.2 Тестирование, документация

Презентация

ДЗ4 (срок: 20.05)

Документирование API из ЛР2 средствами Swagger/Postman

ДЗ5 (срок 20.05)

Тестирование API из ЛР2 средствами Postman

3. DI, IoC, Развёртывание, микросервисы, CI/CD

3.1 DI, IoC

Презентация по DI, IoC

3.2 Микросервисы

Презентация по микросервисам

ЛР3 (срок: 05.06.2022)

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

3.3 Docker, docker compose, docker swarm

Презентация по docker

ЛР4 (срок: 05.06.2022)

Необходимо упаковать ваше приложение в docker-контейнеры и обеспечить сетевое взаимодействие между различными частями вашего приложения. Делать это можно как с помощью docker-compose так и с помощью docker swarm. При разумном использовании swirl вы получите дополнительные баллы.