Coder Social home page Coder Social logo

skullmag / itmo-ict-backend-2024 Goto Github PK

View Code? Open in Web Editor NEW

This project forked from kantegory/itmo-ict-backend-2024

0.0 0.0 0.0 80.65 MB

Репозиторий по моему курсу бэкенд-разработки в ИТМО (2024).

JavaScript 8.56% Makefile 0.34% TypeScript 90.58% CSS 0.01% Twig 0.02% Pug 0.02% Dockerfile 0.46%

itmo-ict-backend-2024's Introduction

ITMO-ICT-Backend-2024

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

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

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

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

ДЗ1 (срок: 29.02.2024)

Задание:

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

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

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

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

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

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

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

ДЗ2 (срок 14.03.2024)

Задание:

  • Продумать свою собственную модель пользователя
  • Реализовать набор из 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 (срок: 04.04.2024)

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

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

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

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

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

ДЗ3 (срок: 04.04.2024)

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

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

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

2.1 REST, RESTful, SOAP, GraphQL

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

ЛР2 (срок: 18.04.2024)

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

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

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

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

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

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

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

В качестве микросервисов можно вынести: сервис авторизации, сервис для консультаций, сервис для оценки решений участников членами жюри.

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

  1. Сервис для буккроссинга. Требуемый функционал: регистрация, авторизация, создание списка своих книг, создание заявок на обмен книгами, работа с заявками на обмен.

В качестве микросервисов можно вынести: сервис для парсинга открытых источников с книгами, сервис для работы с заявками на обмен, сервис авторизации.

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

В качестве микросервисов можно вынести: сервис для авторизации и регистрации, сервис для парсинга открытых источников с достопримечательностями, сервис для организации поездок.

Можно сделать в паре при двух условиях: наличие рекомендательной системы для предложения мест, которые стоит посетить или увеличение объёма работы в несколько раз (это надо согласовать).

  1. Сервис для управления умным домом. Требуемый функционал: регистрация, авторизация, создание профиля, добавление нового устройства, настройка устройства, создание сценариев, запуск сценариев по триггерам/либо по времени (запуск сценариев можно сымитировать, главное, чтобы о запуске сохранилась информация в логах).

В качестве микросервиса можно вынести: сервис для авторизации и регистрации, сервис для работы с устройствами, сервис для запуска сценариев.

  1. Сервис для работы с магазином одежды. Требуемый функционал: регистрация, авторизация, создание профиля, работа с товарами, просмотр количества единиц товара, управление скидками и акциями, работа с базой клиентов.

В качестве микросервиса можно вынести: сервис для авторизации и регистрации, сервис учёта товаров, сервис для покупок товаров, сервис для управлениями скидками, сервис парсинга товаров из открытых источников данных.

Можно сделать в паре при двух условиях: наличие рекомендательной системы для предложения товаров, которые стоит посетить или увеличение объёма работы в несколько раз (это надо согласовать).

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

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

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

  • Вход

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

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

  • Поиск с возможностью фильтрации

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

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

ДЗ4 (срок: 25.04.2024)

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

ДЗ5 (срок 25.04.2024)

Тестирование API из ЛР2 средствами Postman (написать 2-3 теста для конкретных эндпоинтов + 1 общий тест для всех эндпоинтов)

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

3.1 DI, IoC

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

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

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

ЛР3 (срок: 16.05.2024)

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

3.3 Docker, docker compose, docker swarm

Презентация по docker
Пример настройки docker, docker compose для node-приложения

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

Презентация по очередям сообщений
Пример

ЛР4 (срок: 30.05.2024)

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

3.4 CI/CD

Пример репозитория с настроенным CI/CD через Gitlab CI

Вводную информацию по Github Actions и Gitlab CI можно подчерпнуть из документации:

ДЗ6 (срок: 30.05.2024)

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

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

itmo-ict-backend-2024's People

Contributors

7alexandra8 avatar a-korotin avatar aanazhi avatar artostensei avatar descent1511 avatar goose47 avatar helbroone avatar ilya3716 avatar ilyakazankov avatar jarvis394 avatar kantegory avatar katemaliutina avatar malyshenko-alexander avatar marypronina avatar mesh296 avatar mitursky avatar mrpartynick avatar oleinikovapolina avatar oleinikovapolinastudy avatar pavel-nikitin-2022 avatar pflolexe avatar puroblast avatar rashevskiivv avatar sashazharov avatar skullmag avatar sokolovskayaa avatar ssanyoq avatar taiakindaniil avatar tutor03 avatar v0val0x avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.