Курс по бэкенд-разработке в среде Node.JS для Университета ИТМО
ДЗ1 (срок: 29.02.2024)
Задание:
- Установка npm (10.2.4), node.js (18.19.1 / 20.11.1)
- Инициализация npm-пакета
- Установка express
- Удаление express/попытка его обновить
- Написание кастомной команды для npm, чтобы можно удалить express командой “npm run rme”
Необходимо сделать отчёт по шаблону
Презентация Express + Sequelize
Документация Express Документация Sequelize Документация sequelize-cli
Пример, который делали на паре
ДЗ2 (срок 14.03.2024)
Задание:
- Продумать свою собственную модель пользователя
- Реализовать набор из CRUD-методов для работы с пользователями средствами Express + Sequelize
- Написать запрос для получения пользователя по id/email
Необходимо сделать отчёт по шаблону
Презентация "Основы TypeScript, работа с Makefile" Презентация "Основы TypeScript, Sequelize + TypeScript"
Статья по основам синтаксиса на Хабре
Статья на Nuances of Programming
Карманная книжка по TS
Видео от Хекслет про утилиту make
Makefile для самых маленьких, но это больше про C
Введение в make: история
Пример, который делали на паре
Источники по поводу использования typescript в ORM:
Документация пакета sequelize-typescript
Мануал по использованию typescript внутри sequelize
Документация TypeORM (можно использовать в качестве альтернативы Sequelize)
ЛР1 (срок: 28.03.2024)
Нужно написать свой boilerplate на express + sequelize / TypeORM + typescript.
Должно быть явное разделение на:
- модели
- контроллеры
- роуты
- сервисы для работы с моделями (реализуем паттерн “репозиторий”)
Пример: https://github.com/kantegory/express-sequelize-boilerplate
Другие примеры можно поискать на github, набрав в поиске: "express boilerplate".
ДЗ3 (срок: 04.04.2024)
Составьте Makefile, который будет автоматизировать ваши рутинные действия, такие как:
- запуск приложения;
- установка зависимостей и сборка приложения.
Презентация: REST, RESTful, SOAP, GraphQL
Видео
ЛР2 (срок: 18.04.2024)
В рамках данной лабораторной работы Вам предложено выбрать один из нескольких вариантов. Выбранный вариант останется единым на весь курс и будет использоваться в последующих лабораторных работах.
По выбранному варианту необходимо будет реализовать RESTful API средствами express + typescript (используя ранее написанный boilerplate).
Доступные варианты
- Платформа для проведения онлайн-хакатонов (пример: https://devpost.com)
Есть несколько сущностей: жюри хакатона, участники, главный администратор, кураторы задач. У участников есть возможность выбрать одну из задач (регистрируется и имеет доступ к системе только капитан команды), после выбора задачи капитан может предложить решение, скачать какие-то файлы, которые ему предложены, посмотреть на ссылки, которые есть в задаче.
Ссылки и файлы к задачам добавляют кураторы задач через отдельный админский интерфейс, кроме того у них есть доступ к решениям, как и у членов жюри. Куратор может назначаться только на одну задачу и проводить консультации (например, в Zoom, ссылку на консультацию он крепит к самой задаче и это выводится у команды в ЛК). Жюри может оценивать решения участников, с комментариями, сортировать решения по дате публикации.
Капитан при регистрации заполняет только свои учётные данные, после в кабинете команды — он может заполнить данные по каждому участнику, название команды и какой-нибудь условный девиз/описание.
У главного админа есть доступ ко всему, но он не может добавлять команды и редактировать их решения. Так же, не имеет права оценивать решения участников. Только просматривать. Ещё он может создавать задачи, которые потом будут дополнять кураторы. Ну и назначать кураторов на задачи, разумеется.
Поскольку этот вариант является довольно объёмным и сложным — для его выполнения можно объединиться в команды по 2-3 человека, но нужно об этом заранее предупредить.
- Платформа для поиска профессиональных мероприятий (пример: https://www.meetup.com/ru-RU/)
-
Вход
-
Регистрация
-
Поиск мероприятия (фильтрации по типу мероприятия, месту проведения)
-
Календарь ближайших мероприятий
-
Промо-страница для организаторов мероприятия
-
Личный кабинет пользователя со списком мероприятий, на которые он записывался
- Сайт криптобиржи (пример: https://www.coinbase.com/ru/)
-
Вход
-
Регистрация
-
Портфель пользователя с указанием различных криптовалют и их количеством
-
Графики роста криптовалют
-
Поиск по криптовалютам с возможностью фильтрации по дате добавления на биржу
- Сайт администратора интернет-магазина
-
Вход
-
Регистрация
-
Учёт товара на складе
-
Графики по продажам тех или иных товаров, по общей выручке предприятия
-
Управление сотрудниками
- Любое API, которое вам интересно реализовать
Да, всё верно. Вы можете предложить свой вариант, необходимо отдельно его согласовать со мной.
Он обязательно должен включать в себя следующий функционал:
-
Вход
-
Регистрация
-
Личный кабинет пользователя
-
Поиск с возможностью фильтрации
ДЗ4 (срок: 25.04.2024)
Документирование API из ЛР2 средствами Swagger, Postman
ДЗ5 (срок 25.04.2024)
Тестирование API из ЛР2 средствами Postman
ЛР3 (срок: 02.05.2024)
Необходимо реализовать отдельный микросервис, выполняющий какую-либо содержательную функцию из всего арсенала функций вашего приложения.
ЛР4 (срок: 16.05.2024)
Необходимо упаковать ваше приложение в docker-контейнеры и обеспечить сетевое взаимодействие между различными частями вашего приложения. Делать это можно как с помощью docker-compose так и с помощью docker swarm. При разумном использовании swirl вы получите дополнительные баллы.
Вводную информацию по Github Actions и Gitlab CI можно подчерпнуть из документации:
ДЗ6 (срок: 23.05.2024)
Необходимо настроить автодеплой (с триггером на обновление кода в вашем репозитории, на определённой ветке) для вашего приложения на удалённый сервер с использованием Github Actions или Gitlab CI (любая другая CI-система также может быть использована).
В случае, если у вас нет возможности арендовать удалённый сервер, можно воспользоваться временной квотой в Yandex.Cloud, или любым другим аналогичным сервисом, на котором предоставляют бесплатные ресурсы на время тестирования. В том же случае, если у вас все эти квоты уже исчерпаны и нет возможности арендовать удалённый сервер самостоятельно - обратитесь ко мне лично, постараюсь предоставить вам мощности, но не делайте этого в последний момент, так шансов у вас крайне мало.