Skip to content

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

Notifications You must be signed in to change notification settings

kantegory/ITMO-ACS-Backend-2025

Repository files navigation

ITMO-ACS-Backend-2025

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

Материалы курса

Варианты лабораторного проекта

  1. Сайт для поиска работы

    • Вход
    • Регистрация
    • Личный кабинет пользователя (с резюме)
    • Поиск вакансий с фильтрацией по отрасли, зарплате, опыту
    • Страница с деталями вакансии (описание, требования, компания)
    • Личный кабинет работодателя (управление вакансиями)
  2. Платформа для фитнес-тренировок и здоровья

    • Вход
    • Регистрация
    • Личный кабинет пользователя (трекинг прогресса, планы тренировок)
    • Поиск тренировок с фильтрацией по уровню, типу (кардио, силовые) и продолжительности
    • Страница тренировки с видео, описанием и инструкциями
    • Блог о здоровье и питании
  3. Сервис для аренды недвижимости

    • Вход
    • Регистрация
    • Личный кабинет пользователя (список арендованных и арендующихся объектов)
    • Поиск недвижимости с фильтрацией по типу, цене, расположению
    • Страница объекта недвижимости с фото, описанием и условиями аренды
    • История сообщений и сделок пользователя
  4. Сервис для обмена рецептами и кулинарных блогов

    • Вход
    • Регистрация
    • Личный кабинет пользователя (сохраненные рецепты, публикации)
    • Поиск рецептов с фильтрацией по типу блюда, сложности, ингредиентам
    • Страница рецепта с фото, пошаговыми инструкциями и видео
    • Социальные функции (комментарии, лайки, подписки на кулинаров)
  5. Платформа для организации путешествий

    • Вход/Регистрация
    • Личный кабинет путешественника (избранные маршруты, бронирования)
    • Поиск маршрутов с фильтрацией по бюджету, продолжительности поездки, типу отдыха
    • Карточка маршрута с описанием достопримечательностей, отзывами туристов, фото и видео
    • Социальные функции (рекомендации, отзывы, общение с другими туристами)
  6. Свой вариант (необходимо отдельно согласовать, требованию остаются общими)

Инструкция по загрузке работ

Работы нужно загружать по следующей маске: {GROUP}/{FULL_NAME}/{TASK_TYPE}/{TASK_TYPE}{TASK_NUMBER}/{TASK_TYPE}{TASK_NUMBER}_{FULL_NAME}_{GROUP}.

Рассмотрим на примере, вы Иванов Иван из группы БР1.1 и хотите загрузить первую домашнюю работу. В таком случае, вам надо загрузить её по следующуему пути: БР1.1/Иванов Иван/homeworks/hw1/ДЗ1_Иванов Иван_БР1.1.pdf, дополнительные файлы следует загружать в директорию БР1.1/Иванов Иван/homeworks/hw1.

Если вы хотите загрузить отчёт по лабораторной работе, то путь будет таким: БР1.1/Иванов Иван/labs/lab1/ЛР1_Иванов Иван_БР1.1.pdf, дополнительные файлы следует загружать в директорию БР1.1/Иванов Иван/labs/lab1/.

При создании коммитов следует руководствоваться спецификацией - https://www.conventionalcommits.org/en/v1.0.0/.

Не забудьте открыть Pull Request, удачи!

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

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

ДЗ1: Проектирование базы данных

Срок: 21.03.2025

Задание:

  1. Выберите один из предложенных вариантов работ
  2. Спроектируйте БД, придерживаясь нотации ERD (не жду полного соблюдения, можно делать через draw.io)
  3. Составьте и загрузите отчёт на github
  4. Подключитесь на защиту, чтобы согласовать вашу концепцию

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

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

Презентация

Можно почитать:

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

Презентация

Можно почитать:

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

Презентация

Можно почитать:

1.4. Знакомство с TypeORM

Презентация

Можно почитать:

ДЗ2: Работа с TypeORM

Срок: 21.04.2025

Задание:

  • Реализовать все модели данных, спроектированные в рамках ДЗ1
  • Реализовать набор из CRUD-методов для работы с моделями данных средствами Express + TypeScript
  • Реализовать API-эндпоинт для получения пользователя по id/email

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

ЛР1: Реализация boilerplate

Срок: 28.04.2025

Задание:

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

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

  • модели
  • контроллеры
  • роуты

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

Пример: express-typeorm-boilerplate

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

2.1 REST, RESTful

Презентация

Можно почитать:

ЛР2: Реализация REST API на основе boilerplate

Срок: 12.05.2025

Задание:

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

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

2.2 Документирование API

Презентация

Можно почитать:

ДЗ3: Документирование API средствами swagger и Postman

Срок: 12.05.2025

Задание:

  • реализовать автодокументирование средствами swagger;
  • реализовать документацию API средствами Postman.

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

2.3 Тестирование API

Презентация

ДЗ4: Тестирование API средствами Postman

Срок: 26.05.2025

Задание:

  • реализовать тестирование API средствами Postman;
  • написать тесты внутри Postman.

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

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

3.1 DI, IoC

Презентация

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

Презентация

ЛР3: Миграция написанного API на микросервисную архитектуру

Срок: 02.06.2025

Задание:

  • выделить самостоятельные модули в вашем приложении;
  • провести разделение своего API на микросервисы (минимум, их должно быть 3);
  • настроить сетевое взаимодействие между микросервисами.

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

3.3 Docker, docker compose

Презентация

ЛР4: Контейнеризация написанного приложения средствами docker

Срок: 02.06.2025

Задание:

  • реализовать Dockerfile для каждого сервиса;
  • написать общий docker-compose.yml;
  • настроить сетевое взаимодействие между сервисами.

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

3.4 Очереди сообщений

Презентация

ДЗ5: Реализация межсервисного взаимодействия посредством очередей сообщений

Срок: 18.06.2025

Задание:

  • подключить и настроить rabbitMQ/kafka;
  • реализовать межсервисное взаимодействие посредством rabbitMQ/kafka.

Пример

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

3.5 CI/CD

Материал находится в разработке.

Можно почитать:

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

ДЗ6: Настройка Gitlab CI/Github actions для автоматического развёртывания Node.JS-приложения

Срок: 18.06.2025

Задание:

Необходимо настроить автодеплой (с триггером на обновление кода в вашем репозитории, на определённой ветке) для вашего приложения на удалённый сервер с использованием Github Actions или Gitlab CI (любая другая CI-система также может быть использована).

⚠️ В случае, если у вас нет возможности арендовать удалённый сервер, можно воспользоваться временной квотой в Yandex.Cloud, или любым другим аналогичным сервисом, на котором предоставляют бесплатные ресурсы на время тестирования. В том же случае, если у вас все эти квоты уже исчерпаны и нет возможности арендовать удалённый сервер самостоятельно - обратитесь ко мне лично, постараюсь предоставить вам мощности, но не делайте этого в последний момент, так шансов у вас крайне мало.

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

About

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

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 49