Giter Site home page Giter Site logo

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 (срок: 28.03.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. Платформа для поиска профессиональных мероприятий (пример: https://www.meetup.com/ru-RU/)
  • Вход

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

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

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

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

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

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

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

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

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

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

  1. Сайт администратора интернет-магазина
  • Вход

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

  • Учёт товара на складе

  • Графики по продажам тех или иных товаров, по общей выручке предприятия

  • Управление сотрудниками

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

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

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

  • Вход

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

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

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

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

Презентация

ДЗ4 (срок: 25.04.2024)

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

ДЗ5 (срок 25.04.2024)

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

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

3.1 DI, IoC

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

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

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

ЛР3 (срок: 02.05.2024)

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

3.3 Docker, docker compose, docker swarm

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

ЛР4 (срок: 16.05.2024)

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

3.4 CI/CD

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

ДЗ6 (срок: 23.05.2024)

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

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

itmo-ict-backend-2024's People

Contributors

kantegory 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.