Курс по бэкенд-разработке в среде Node.JS для Университета ИТМО
-
Сайт для поиска работы
- Вход
- Регистрация
- Личный кабинет пользователя (с резюме)
- Поиск вакансий с фильтрацией по отрасли, зарплате, опыту
- Страница с деталями вакансии (описание, требования, компания)
- Личный кабинет работодателя (управление вакансиями)
-
Платформа для фитнес-тренировок и здоровья
- Вход
- Регистрация
- Личный кабинет пользователя (трекинг прогресса, планы тренировок)
- Поиск тренировок с фильтрацией по уровню, типу (кардио, силовые) и продолжительности
- Страница тренировки с видео, описанием и инструкциями
- Блог о здоровье и питании
-
Сервис для аренды недвижимости
- Вход
- Регистрация
- Личный кабинет пользователя (список арендованных и арендующихся объектов)
- Поиск недвижимости с фильтрацией по типу, цене, расположению
- Страница объекта недвижимости с фото, описанием и условиями аренды
- История сообщений и сделок пользователя
-
Сервис для обмена рецептами и кулинарных блогов
- Вход
- Регистрация
- Личный кабинет пользователя (сохраненные рецепты, публикации)
- Поиск рецептов с фильтрацией по типу блюда, сложности, ингредиентам
- Страница рецепта с фото, пошаговыми инструкциями и видео
- Социальные функции (комментарии, лайки, подписки на кулинаров)
-
Платформа для организации путешествий
- Вход/Регистрация
- Личный кабинет путешественника (избранные маршруты, бронирования)
- Поиск маршрутов с фильтрацией по бюджету, продолжительности поездки, типу отдыха
- Карточка маршрута с описанием достопримечательностей, отзывами туристов, фото и видео
- Социальные функции (рекомендации, отзывы, общение с другими туристами)
-
Свой вариант (необходимо отдельно согласовать, требованию остаются общими)
Работы нужно загружать по следующей маске: {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, удачи!
Срок: 21.03.2025
Задание:
- Выберите один из предложенных вариантов работ
- Спроектируйте БД, придерживаясь нотации ERD (не жду полного соблюдения, можно делать через draw.io)
- Составьте и загрузите отчёт на github
- Подключитесь на защиту, чтобы согласовать вашу концепцию
Необходимо сделать отчёт по шаблону
Можно почитать:
- Документация по командам npm: https://docs.npmjs.com/cli/v11/commands
- Установка nvm на Linux/MacOS: https://github.com/nvm-sh/nvm?tab=readme-ov-file#installing-and-updating
- Установка nvm на Windows: https://github.com/coreybutler/nvm-windows?tab=readme-ov-file#installation--upgrades
- Скачать node.js без nvm: https://nodejs.org/en
Можно почитать:
- Официальная документация TypeScript: https://www.typescriptlang.org/docs/
- Карманная книжка по TypeScript: https://www.typescriptlang.org/docs/handbook/intro.html
- Статья по основам синтаксиса: https://nuancesprog.ru/p/14210/
Можно почитать:
- Официальная документация: https://expressjs.com/en/starter/installing.html
- Пример с эндпоинтами: https://github.com/kantegory/mentoring/tree/master/28_express_endpoints
Можно почитать:
- Документация typeorm: https://typeorm.io/
- Пример реализации приложения на Express + TypeORM: https://orkhan.gitbook.io/typeorm/docs/example-with-express
- Документация jsonwebtoken: https://github.com/auth0/node-jsonwebtoken#readme
Срок: 21.04.2025
Задание:
- Реализовать все модели данных, спроектированные в рамках ДЗ1
- Реализовать набор из CRUD-методов для работы с моделями данных средствами Express + TypeScript
- Реализовать API-эндпоинт для получения пользователя по id/email
Необходимо сделать отчёт по шаблону
Срок: 28.04.2025
Задание:
Нужно написать свой boilerplate на express + TypeORM + typescript.
Должно быть явное разделение на:
- модели
- контроллеры
- роуты
Необходимо сделать отчёт по шаблону
Пример: express-typeorm-boilerplate
Можно почитать:
- Сайт, посвящённый REST и RESTful: https://restfulapi.net/
Срок: 12.05.2025
Задание:
По выбранному варианту необходимо будет реализовать RESTful API средствами express + typescript (используя ранее написанный boilerplate).
Необходимо сделать отчёт по шаблону
Можно почитать:
- Документация tsoa: https://tsoa-community.github.io/docs/getting-started.html
- Документация routing-controllers-openapi: https://github.com/epiphone/routing-controllers-openapi
- Документация swagger-jsdoc: https://github.com/Surnet/swagger-jsdoc
- Пример автодокументирования с tsoa: https://github.com/kantegory/mentoring/tree/master/30_express_swagger_tsoa_example
- Пример автодокументирования с routing-controllers: https://github.com/kantegory/mentoring/tree/master/29_express_swagger_routing_controllers_example
- Пример автодокументирования с swagger-jsdoc: https://github.com/kantegory/mentoring/tree/master/16_express_swagger_example
- Пример документирования в Postman: https://github.com/kantegory/mentoring/tree/master/24_postman_example
Срок: 12.05.2025
Задание:
- реализовать автодокументирование средствами swagger;
- реализовать документацию API средствами Postman.
Необходимо сделать отчёт по шаблону
Срок: 26.05.2025
Задание:
- реализовать тестирование API средствами Postman;
- написать тесты внутри Postman.
Необходимо сделать отчёт по шаблону
Срок: 02.06.2025
Задание:
- выделить самостоятельные модули в вашем приложении;
- провести разделение своего API на микросервисы (минимум, их должно быть 3);
- настроить сетевое взаимодействие между микросервисами.
Необходимо сделать отчёт по шаблону
Срок: 02.06.2025
Задание:
- реализовать Dockerfile для каждого сервиса;
- написать общий docker-compose.yml;
- настроить сетевое взаимодействие между сервисами.
Необходимо сделать отчёт по шаблону
Срок: 18.06.2025
Задание:
- подключить и настроить rabbitMQ/kafka;
- реализовать межсервисное взаимодействие посредством rabbitMQ/kafka.
Необходимо сделать отчёт по шаблону
Материал находится в разработке.
Можно почитать:
- Документация по Github Actions: https://docs.github.com/en/actions
- Документация по Gitlab CI: https://docs.gitlab.com/ee/ci/
Необходимо сделать отчёт по шаблону
Срок: 18.06.2025
Задание:
Необходимо настроить автодеплой (с триггером на обновление кода в вашем репозитории, на определённой ветке) для вашего приложения на удалённый сервер с использованием Github Actions или Gitlab CI (любая другая CI-система также может быть использована).
Необходимо сделать отчёт по шаблону