ReactJS/React Native-разработчик | OTUS
СКИДКА 29% на все курсы только в эти выходные!
Успейте начать обучение по выгодной цене! Активируйте промокод Happy_Holydays20
Выбрать курс

Курсы

Специализации Курсы в разработке Подготовительные курсы
+7 499 110-61-65

ReactJS/React Native-разработчик

Современная Frontend-разработка и создание мобильных приложений под iOS и Android на JavaScript.
Обучение сотрудников

Длительность

4 месяца

Продолжительность
4 месяца, 4 академ. часа в неделю
Что даст вам этот курс

Сегодня уже необязательно иметь 3 команды разработчиков, чтобы поддерживать несколько разных проектов, например:
— веб-сайт на ReactJS и JS,
— iOS-приложение на Swift,
— Android-приложение на Java или Kotlin.

React JS вместе с React Native позволят одному специалисту создать многофункциональный сайт и на его базе разработать мобильные приложения для Android и iOS.

React Native был разработан компанией Facebook. На нём написаны мобильные приложения Facebook, Instagram, Skype, Uber Eats, Pinterest и многие другие.

Для кого этот курс

JavaScript-разработчики с навыками HTML/CSS.

Выпускной проект для портфолио

Вы разработаете веб-приложение, похожее на twitter на ReactJS и Redux. Затем перенесёте на мобильные устройства с использованием React Native и Redux.


Разработка фронтенда и мобильных приложений под Android и iOS на JavaScript

Создание фронтенда любой сложности на ReactJS, Flux, Redux

Портирование фронтенда под Android и iOS с помощью React Native

Углубленное изучение JavaScript

Преподаватели
Евгений Евстропов
Team Lead (Medici Living Group)
Александр Коржиков
Dev IT Engineer ING Group (Нидерланды)
Владимир Иванов
Development Lead (EPAM Systems)
Андрей Поляков
Ведущий мобильный разработчик в РокетБанк
Юрий Дворжецкий
Luxoft Training Center
Никита Овчинников
Живёт и работает в Германии, возглавляет команду Frontend-разработчиков в компании Medici Living Group.

Участвовал в создании различных приложений на React Native, Swift, Java и Xamarin.Forms с нуля и до production. Периодически делал contribution в различных open-source-библиотеках для React Native, примеры можно посмотреть по ссылкам на GitHub: Google Fit, Apple Healthkit.

Занимается программированием ещё со школьных лет: сначала это была лишь олимпиадная сфера, затем, на втором курсе университета, перешёл в научную среду и начал работать в Институте системного программирования. На 4-м курсе увлёкся мобильной разработкой и открыл для себя мир React Native. В течение 3 лет занимался аутсорсингом в составе небольшой интернациональной команды, создавая приложения на заказ.

Образование:
— Высшая школа экономики, «Инженер программного обеспечения»;
— University of Kaiserslautern, Germany, Computer Science.

Опытный программист, Senior Web Developer, тимлид, ментор и автор технических статей по JavaScript. Специалист по Front End, программирует на JavaScript, начиная с 2010 года.

Работал в компаниях Tinkoff Bank (Москва), «Альпари», Comindware, Backbase (Амстердам) и других. С 2017 года — Dev IT Engineer в международной финансовой корпорации ING Group (Нидерланды). Занимается проектированием и поддержкой процессов web-разработки.

Среди реализованных проектов — JSON Schema Validator Library (самая быстрая JavaScript-библиотека для проверки объектов на соответствие определениям JSON).

Образование: степень магистра в Московском государственном университете им. М. В. Ломоносова (факультет вычислительной математики и кибернетики, кафедра автоматизации научных исследований).

Опытный разработчик мобильных приложений (Android, React Native) с сильными навыками руководства командой. Технический руководитель, менеджер проектов, специалист по облачным сервисам и архитектор решений с сертификатом Google Certified Cloud Architect.

Руководил несколькими проектами c нуля до публикации в качестве архитектора решений, менеджера проектов, Tech Lead'а. Интересуется современными мобильными платформами (iOS, cross platform). В коммерческой разработке с 2010 года.

Окончил факультет технической кибернетики в Санкт-Петербургском политехническом университете Петра Великого. Работал в Kaspersky Lab, EPAM Systems, Reksoft, Fonum Inc., Syncplicity.

Образование: МГТУ им. Баумана, факультет информатики и управления, кафедра «Компьютерные системы, вычислительные комплексы и сети».

Опыт работы: 4 года. Ключевые навыки: CSS3, ES6, Sass, React-Native, JavaScript, React, HTML5, Redux, Bootstrap.

Работал над мобильным приложением для My AYR и Card Share на React Native. На текущий момент работает ведущим мобильным разработчиком в Рокетбанке.

Тренер в Luxoft Training Center, ведущий разработчик, кандидат физико-математических наук.
Программирует с начальных классов.

Разрабатывает на разных платформах: большие и маленькие проекты, высоконагруженные и очень красивые, многим известные и совсем специфические.

Влюблён в элегантность и оригинальность JavaScript как классического, так и современного во всех его проявлениях.

Сейчас разрабатывает web-приложения c UI на React и Angular.

Окончил Волгоградский государственный технический университет по специальности «Автоматизированные системы обработки информации и управления». Увлёкся программированием ещё в студенческие годы (в 2010 году) и остановиться так и не смог. В коммерческой разработке с 2012 года.

Работал с проектами разного масштаба, прошёл путь от Junior до Senior. С 2016 года — старший инженер-программист в EPAM Systems, с 2018 по май 2019 — технический руководитель по разработке софта в Skywind Group.

Участвовал в международном проекте компании Ericsson, занимался web-программированием и собственными проектами.

Является специалистом по архитектуре веб-приложений, хорошо знает JS, React, Node, Mongo, MySQL, фреймворки Express, Koa2, AngularJS. Уверен, что в программировании всё приходит с практикой.

Евгений
Евстропов
Александр
Коржиков
Владимир
Иванов
Андрей
Поляков
Юрий
Дворжецкий
Никита
Овчинников
Преподаватели
Евгений Евстропов
Team Lead (Medici Living Group)
Живёт и работает в Германии, возглавляет команду Frontend-разработчиков в компании Medici Living Group.

Участвовал в создании различных приложений на React Native, Swift, Java и Xamarin.Forms с нуля и до production. Периодически делал contribution в различных open-source-библиотеках для React Native, примеры можно посмотреть по ссылкам на GitHub: Google Fit, Apple Healthkit.

Занимается программированием ещё со школьных лет: сначала это была лишь олимпиадная сфера, затем, на втором курсе университета, перешёл в научную среду и начал работать в Институте системного программирования. На 4-м курсе увлёкся мобильной разработкой и открыл для себя мир React Native. В течение 3 лет занимался аутсорсингом в составе небольшой интернациональной команды, создавая приложения на заказ.

Образование:
— Высшая школа экономики, «Инженер программного обеспечения»;
— University of Kaiserslautern, Germany, Computer Science.

Александр Коржиков
Dev IT Engineer ING Group (Нидерланды)
Опытный программист, Senior Web Developer, тимлид, ментор и автор технических статей по JavaScript. Специалист по Front End, программирует на JavaScript, начиная с 2010 года.

Работал в компаниях Tinkoff Bank (Москва), «Альпари», Comindware, Backbase (Амстердам) и других. С 2017 года — Dev IT Engineer в международной финансовой корпорации ING Group (Нидерланды). Занимается проектированием и поддержкой процессов web-разработки.

Среди реализованных проектов — JSON Schema Validator Library (самая быстрая JavaScript-библиотека для проверки объектов на соответствие определениям JSON).

Образование: степень магистра в Московском государственном университете им. М. В. Ломоносова (факультет вычислительной математики и кибернетики, кафедра автоматизации научных исследований).

Владимир Иванов
Development Lead (EPAM Systems)
Опытный разработчик мобильных приложений (Android, React Native) с сильными навыками руководства командой. Технический руководитель, менеджер проектов, специалист по облачным сервисам и архитектор решений с сертификатом Google Certified Cloud Architect.

Руководил несколькими проектами c нуля до публикации в качестве архитектора решений, менеджера проектов, Tech Lead'а. Интересуется современными мобильными платформами (iOS, cross platform). В коммерческой разработке с 2010 года.

Окончил факультет технической кибернетики в Санкт-Петербургском политехническом университете Петра Великого. Работал в Kaspersky Lab, EPAM Systems, Reksoft, Fonum Inc., Syncplicity.

Андрей Поляков
Ведущий мобильный разработчик в РокетБанк
Образование: МГТУ им. Баумана, факультет информатики и управления, кафедра «Компьютерные системы, вычислительные комплексы и сети».

Опыт работы: 4 года. Ключевые навыки: CSS3, ES6, Sass, React-Native, JavaScript, React, HTML5, Redux, Bootstrap.

Работал над мобильным приложением для My AYR и Card Share на React Native. На текущий момент работает ведущим мобильным разработчиком в Рокетбанке.

Юрий Дворжецкий
Luxoft Training Center
Тренер в Luxoft Training Center, ведущий разработчик, кандидат физико-математических наук.
Программирует с начальных классов.

Разрабатывает на разных платформах: большие и маленькие проекты, высоконагруженные и очень красивые, многим известные и совсем специфические.

Влюблён в элегантность и оригинальность JavaScript как классического, так и современного во всех его проявлениях.

Сейчас разрабатывает web-приложения c UI на React и Angular.

Никита Овчинников
Окончил Волгоградский государственный технический университет по специальности «Автоматизированные системы обработки информации и управления». Увлёкся программированием ещё в студенческие годы (в 2010 году) и остановиться так и не смог. В коммерческой разработке с 2012 года.

Работал с проектами разного масштаба, прошёл путь от Junior до Senior. С 2016 года — старший инженер-программист в EPAM Systems, с 2018 по май 2019 — технический руководитель по разработке софта в Skywind Group.

Участвовал в международном проекте компании Ericsson, занимался web-программированием и собственными проектами.

Является специалистом по архитектуре веб-приложений, хорошо знает JS, React, Node, Mongo, MySQL, фреймворки Express, Koa2, AngularJS. Уверен, что в программировании всё приходит с практикой.

Необходимые знания
Для прохождения программы необходимы:
— знания HTML/CSS,
— опыт работы с JavaScript,
— знания основ работы браузера и браузерного API,
— базовые навыки работы с Git.

Наличие компьютера под управлением MacOS будет плюсом, но не является обязательным требованием для участия в курсе.
Программа обучения
Модуль 1
JavaScript
Модуль 2
React
Модуль 3
Первые шаги в React Native
Модуль 4
Запросы на сервер, React Native + Redux
Модуль 5
React.Native: навигация, хранение сессии, анимация
Модуль 6
React.Native: работа с фотографиями и публикация
Модуль 7
Проектная работа
JavaScript
Мы рассмотрим основные возможности современного и традиционного JavaScript, стандарт EcmaScript 6+, Templates, асинхронные паттерны Promise, Async Await, переменные, замыкания, функции, наследование и классы. Разберем особенности браузерного API и спецификаций Web Components на примере библиотеки Lit-HTML. Обсудим главные принципы и возможности Node.js, а также NPM для управления зависимостями и автоматизации задач. Мы научимся использовать Test-Driven Development при решении практических задач.
Тема 1: Введение в курс Modern JavaScript Frameworks
участники смогут:
— познакомиться с преподавателем и программой курса, понять, как она построена, и какие полезные навыки они получат;
— вспомнить основные возможности языка JavaScript;
— применять техники языка, которые помогут при изучении фреймворков.
Домашние задания: 1
1 Написать функцию суммирования значений
Написать функцию sum, которая может быть исполнена любое количество раз с не `undefined` аргументом.
Если она исполнена без аргументов, то возвращает значение суммы всех переданных до этого значений.

sum(1)(2)(3)....(n)() === 1 + 2 + 3 + ... + n
Тема 2: Возможности современного JavaScript
участники смогут:
— решать специфичные для браузерной разработки задачи на языке JavaScript;
— освоить и вспомнить теорию, которая будет базисом для последующих уроков;
— попрактиковаться с технологиями AJAX, WebSocket, Promise.
Домашние задания: 1
1 promiseReduce — работа с асинхронными функциями
Цель: Написать функцию: promiseReduce(asyncFunctions, reduce, initialValue) asyncFunctions — массив асинхронных функций, возвращающих промис. reduce(memo, value) — функция, которая будет вызвана для каждого успешно завершившегося промиса. initialValue — стартовое значение для функции reduce. promiseReduce последовательно вызывает переданные асинхронные функции и выполняет reduce-функцию сразу при получении результата до вызова следующей асинхронной функции. Функция promiseReduce должна возвращать промис с конечным результатом.
Тема 3: JavaScript — работа с браузером
участники смогут:
— решать специфичные для браузерной разработки задачи на языке JavaScript;
— работать с Chrome Dev Tools.
Домашние задания: 1
1 getPath — поиск уникального селектора
Написать алгоритм и функцию `getPath()`, находяющую уникальный css-селектор для элемента в документе.
Уникальный селектор может быть использован `document.querySelector()` и возвращать исходный элемент.
`document.querySelectorAll()`, вызванный с этим селектором, не должен находить никаких элементов, кроме исходного.

```javascript
$0 // HTMLElement
getPath($0) // => "..."
```
Тема 4: Web Components
участники смогут:
— ориентироваться в веб-спецификациях Custom Elements и Shadow DOM;
— создавать custom elements, используя встроенные браузерные возможности.
Тема 5: Lit-HTML и Polymer
участники смогут:
— понимать принципы Polymer;
— разбираться в стандарте HTML Template;
— использовать особенности Lit-HTML для создания приложений.
Домашние задания: 1
1 Custom Elements Tree
С помощью Custom Elements создать приложение для показа дерева с помощью компонентов my-tree и my-leaf. Компоненты должны получать данные о структуре поддерева от родительского элемента. Используйте Shadow DOM при отрисовке компонент. Можно также использовать для реализации Lit-Element, Lit-HTML или Polymer.

Пример структуры

{
"id": 1,
"items": [{
"id": 2,
"items": [{ "id": 3 }]
}]
}
Тема 6: Введение в Node — пакетный менеджер NPM и возможности package.json
участники смогут:
— запускать приложения на платформе Node;
— писать и запускать тесты для серверного JavaScript;
— работать с пакетным менеджером NPM;
— управлять зависимостями и автоматизировать задачи с помощью package.json.
Домашние задания: 1
1 Реализовать скрипт request для тестирования веб-сервера
Создать локальный веб сервер `server`, отвечающий на запросы каждые 100ms.

Создать скрипт `request`, принимающий на вход:
— количество запросов `N`;
— тип запросов — параллельный или последовательный

Скрипт `request` должен отправлять `N` последовательных или параллельных `HTTP`-запросов к локальному серверу `server.`
Тема 7: Test Driven Development с JavaScript
темы занятия:
— обзор фреймворков и библиотек для тестирования;
— техники тестирования;
— Behavior Driven Development;
— разбор примеров.
React
Мы подробно изучим стэк технологий React. Рассмотрим особенности синтаксической шаблонизации JSX, особенности передачи данных и хранения состояния с помощью state и props. Разберем свойства компонентного подхода для декомпозиции React-приложений, жизненный цикл и типы компонент, например, High-Order Components. Изучим шаблон проектирования Flux и его реализацию на примере библиотеки Redux. Будем настраивать и оптимизировать приложения с Server-Side Rendering.
Тема 1: Основы React и JSX
участники смогут:
— настроить себе окружение для работы с React и использовать его;
— понимать и применять синтаксис JSX;
— создавать простые приложения на React.
Домашние задания: 1
1 Настройка react app
Цель: 1. Развернуть приложение с помощью CRA (по желанию) 2. Настроить кастомный webpack + babel проект (+2 балла) 3. Заставить работать TypeScript через babel (+1 бал) 4. Написать хелло ворлд (todo app или любое другое), сделать базовую верстку вашего приложения, поработать с JSX (+2 бал)
Тема 2: Компоненты React — Lifecycle React-компонент — state и props
участники смогут:
— разрабатывать полноценные React-компоненты в различных стилях;
— корректно использовать state и props.
Домашние задания: 1
1 Создать структуру приложения погоды
Приложение для самостоятельной работы в блоке React — веб-приложение погоды.
На странице приложения должна быть возможность добавлять города в список избранных.
По каждому городу показывается информация о температуре, ветре, другие параметры.

---

Создать структуру приложения, создать компоненты контейнеры.
Тема 3: Higher-Order Components
Тема 4: Состояние приложения — Flux и Redux
участники смогут:
— отличать основные понятия однонаправленной архитектуры Flux;
— ориентироваться и использовать возможности redux — создавать actions, reducers, а также применять redux в связке в React.
Домашние задания: 1
1 react + redux
Цель: С помощью redux работаем с нашим приложением погоды. Стараемся использовать redux вместо react-state
Тема 5: Routing в React — оптимизация приложения
участники смогут:
— создавать систему routing для React-приложений, использовать библиотеку react-router;
— использовать специальные возможности библиотеки для оптимизации отрисовки.
Домашние задания: 1
1 Routing для приложения погоды
Реализовать компонент фильтра и поиска городов.
Данные по городам сохранять в браузерном хранилище.
Добавить страницу погоды по конкретному городу.
При переходе на нее должен меняться url, показываться информация на несколько дней вперед.
Тема 6: Подготовка React-приложения к Production, Best Practices
участники смогут:
— эффективно разрабатывать приложения на React, учитывая последние тенденции в разработке front-end;
— использовать Advanced React;
— применять на практике Best Practices-разработки на React.

Также разберем:
— сборщики — Webpack, Parcel;
— аспекты Server-Side Rendering.
Первые шаги в React Native
Вы научитесь создавать одностраничное приложение на чистом React Native. После трёх первых занятий студенты смогут развернуть проект и создать простое одностраничное приложение.
Тема 1: Базовые компоненты
темы занятия:
— возможности и ограничения React.Native;
— настройка окружения;
— разбор структуры проекта;
— React Class, State, жизненные циклы (краткое повторение);
— базовые компоненты React Native “из коробки” и примеры их использования.
Тема 2: Дебаггинг и вёрстка
темы занятия:
— методы и изменение состояния компонента;
— дебаггинг в консоли Google Chrome и React Native Debugger;
— вёрстка и стили;
— шрифты и иконки.
Тема 3: Создание одностраничного приложения
тема занятия — создание простого одностраничного приложения (создание поста Instagram).
Домашние задания: 1
1 Создать своё приложение Списка гостей
Цель: Необходимо создать кросс-платформенное мобильное приложение(IOS/Android) для управления списком гостей вечеринки.
Запросы на сервер, React Native + Redux
Вы научитесь делать запросы на сервер и использовать контейнер состояний Redux.
После четвертого и пятого занятия студенты смогут подключить к своему проекту Redux и научатся писать запросы к серверу.
Тема 1: Подключаем Redux
темы занятия:
— разбор домашнего задания;
— подключение Redux;
— дебаггинг с Redux Logger;
— экран “Новый Пост” на Redux.
Тема 2: Запросы на сервер
темы занятия:
— подключение axios;
— асинхронные функции, redux-thunk;
— получение списка постов;
— пагинация списка постов, infinite scroll.
Домашние задания: 1
1 Подключить Redux к Списку приглашённых, хранить список на сервере
Цель: 1. Подключить Redux к списку гостей (хранить в сторе сам список гостей, а так же ключи фильтрации) 2. Синхронизировать список гостей с облачным хранилищем, используя ключи данного проекта, и путь /intites c двумя полями: - name (string) - withPartner (bool) Для сдачи достаточно отображать и добавлять гостей в список на сервере. На максимальный бал - добавить функционал изменения имени и значения withPartner Опционально: 1. Настроить собственные проект firebase и настроить в нём хранилище 2. Добавить Authorisation - два поля сверху экрана email/password. И отображать списки отдельно для каждого пользователя.
React.Native: навигация, хранение сессии, анимация
Вы научитесь строить навигацию, интуитивно привычную пользователям мобильных приложений. Сохранять данные между сессиями. Понимать принципы построения анимации. Использовать React Navigation для переходов между экранами. Также изучите основы работы с анимацией.
Тема 1: Навигация и AsyncStorage
темы занятия:
— написание экрана авторизации;
— навигация React Navigation;
— запрос на авторизацию, сохранение токена в AsyncStorage;
— использование токена для запросов, заголовки запросов.
Тема 2: Анимация
темы занятия:
— gif-изображения;
— анимация, Performance Monitor;
— вибрация и звук.
Домашние задания: 1
1 Анимированное удаление приглашённых, добавление экрана “Подробнее” с использованием stackNavigation
Цель: 1. Анимация удаления - любая. Но важно чтобы после удаление не оставалось пустого места на месте удалённого гостя 2. Экран подробнее содержит поле, где можно ввести (и сохранить) заметку о госте. (В NavigationBar - указывается имя гостя) 3. Сохранять текущее состояние в AsyncStorage. Так что после закрыть-открыть приложения - информация введённая ранее так же отображается и без соединения с интернетом. Опционально: 1. Если авторизация была сделана в прошлом задании - то вынести её на отдельный экран. Если нет Очень сложно, но выглядит очень красиво и такое любят делать в реальной практике: 2. При выборе гостя, во время анимации перехода с главного экрана на экран подробнее - имя гостя анимируется и "переходит" в заголовок нового экрана подсказка: можно использовать либо https://github.com/IjzerenHein/react-native-magic-move#react-navigation, или https://wix.github.io/react-native-navigation/#/docs/animations?id=shared-element
React.Native: работа с фотографиями и публикация
Вы научитесь получать разрешение пользователя на доступ к файлам и камере, работать с фотографиями на устройстве и делать фото из приложения.
Студенты будут уметь работать с разрешениями, получать фото из галереи и работать с камерой. Также рассмотрим Unit- и End2End-тестирование приложения.
Тема 1: Получение фото из галереи
темы занятия:
— разрешения;
— получение и отображение фото из галереи;
— выбор фото и отправка на сервер;
— отображение своих постов.
Тема 2: Консультация по проекту
Тема 3: Работа с камерой
темы занятия:
— отображение окна с камерой, настройки;
— захват и сохранение фото.
Домашние задания: 1
1 Экран информации о пользователе, загрузка аватара
Цель: 1. На экране списка гостей, добавить аватар пользователя (в верхнем правом углу экрана) - при нажатии открывается экран редактирования пользователя приложения. Изначально используется default иконка аватара. 2. На экране редактирования пользователя приложения, реализовать возможность менять аватар - путём выбора фотографии из галереи или сделать фотографию с камеры (предоставить пользователю обе опции) * (опционально) Добавить возможность добавления фотографии для каждого из приглашённых гостей, с отображением этой фотографии в списке. Если используете firebase - можно использовать firebase storage чтобы хранить изображения.
Тема 4: Тестирование
темы занятия:
— обсуждение домашнего задания;
— доработки;
— тестирование.
Тема 5: Публикация
темы занятия:
— отличия release- и debug-версий;
— иконка и splash-screen;
— генерация уникальной подписи;
— сборка и подпись приложения;
— заполнение информации о приложении;
— публикация;
— полезные материалы и библиотеки.
Домашние задания: 1
1 Покрыть приложение тестами и опубликовать
Цель: Создать UI тесты, покрывающие (=воспроизводящие) всю функциональность приложения. (т.е. добавление гостя, добавление/убирание партнёра. открытие своего профиля, профиля гостя с вводом заметки и т.д.) Публикация: - создание подписанного release приложения для андройда (.apk), в качестве проверки - запустить этот файл на реальном устройстве, с выключенным режимом разработчика. - если есть аккаунт iOS разработчика - создание AdHoc подписанного приложения (.ipa), запускающегося на вашем устройстве
Проектная работа
После последнего занятия студенты смогут опубликовать своё приложение в маркете.
Тема 1: Консультация по проекту
Тема 2: Защита проектов
Домашние задания: 1
1 Сдать ссылку на репозиторий курсового проекта. В репозитории обязательно должен быть заполнен файл Readme.md с описанием проекта
Прошедшие открытые вебинары по курсу
Открытый вебинар — это настоящее занятие в режиме он-лайн с преподавателем курса, которое позволяет посмотреть, как проходит процесс обучения. В ходе занятия слушатели имеют возможность задать вопросы и получить знания по реальным практическим кейсам.
Знакомство с React.Native
Никита Овчинников
День открытых дверей
19 сентября 2019 года в 20:00
Ваш сертификат

онлайн-образование

Сертификат №0001

Константин Константинопольский

Успешно закончил курс «ReactJS/React Native-разработчик»
Выполнено практических заданий: 16 из 16

Общество с ограниченной ответственностью “Отус Онлайн-Образование”

Город:
Москва

Генеральный директор ООО “Отус Онлайн-Образование”
Виталий Чибриков

Лицензия на осуществление образовательной деятельности
№ 039825 от 28 декабря 2018 года.

онлайн-образование

Сертификат №0001

Константин Константинопольский

Успешно закончил курс «ReactJS/React Native-разработчик»
Выполнено практических заданий: 16 из 16

Общество с ограниченной ответственностью “Отус Онлайн-Образование”

Город:
Москва

Генеральный директор ООО “Отус Онлайн-Образование”
Виталий Чибриков

Лицензия на осуществление образовательной деятельности
№ 039825 от 28 декабря 2018 года.
Только в эти выходные!
🔥 ВИСОКОСНАЯ СКИДКА 29% на все курсы! Промокод – Happy_Holydays20