Содержание курса
1. Введение
6 уроков
27 438
27 438
4м
559
Открытый
1.1
Обзор архитектуры и фичей учебного проекта
↗
9 692
9 692
0м 28с
206
Открытый
1.2
Как проходит обучение
↗
4 627
4 627
1м 3с
102
Открытый
1.3
Связь с Автором
↗
3 664
3 664
0м 13с
56
Закрытый
1.4
Создание графического прототипа
↗
3 781
3 781
1м 52с
76
Закрытый
1.5
Формирование и оценка бэклога проекта
↗
2 901
2 901
1м 0с
76
Закрытый
1.6
Установка программ для разработки
↗
2 773
2 773
1м 33с
43
2. База
10 уроков
18 982
18 982
6м
382
Закрытый
2.1
Мастеркласс по VSCode
↗
2 971
2 971
2м 8с
46
Закрытый
2.2
Создание React приложения с помощью Vite
↗
2 739
2 739
1м 37с
59
Закрытый
2.3
Знакомство с Git и GitHub
↗
2 067
2 067
1м 53с
57
Закрытый
2.4
Получите доступ к полному исходному коду проекта на гитхабе
↗
1 825
1 825
0м 2с
25
Закрытый
2.5
HTML теги
↗
2 051
2 051
0м 19с
47
Закрытый
2.6
React и JavaScript
↗
2 142
2 142
0м 16с
46
Закрытый
2.7
Устанавливайте версии пакетов 1 в 1 как в учебнике
↗
723
723
1м 33с
5
Закрытый
2.8
Автоматическое форматирование кода через Prettier
↗
1 615
1 615
0м 21с
31
Закрытый
2.9
Создание Node.js приложения на TypeScript
↗
1 671
1 671
1м 38с
35
Закрытый
2.10
Поддержите автора подпиской
↗
1 178
1 178
0м 12с
31
3. Бэкенд-фронтенд, уровень 1
4 урока
5 232
5 232
2м
149
Закрытый
3.1
Создание express приложения
↗
1 591
1 591
0м 16с
45
Закрытый
3.2
Создание эндпоинта, возвращающего JSON
↗
1 286
1 286
0м 20с
39
Закрытый
3.3
Добавление tRPC в бэкенд
↗
1 234
1 234
0м 19с
30
Закрытый
3.4
Добавление tRPC во фронтенд
↗
1 121
1 121
1м 37с
35
4. Качество кода
6 уроков
4 844
4 844
2м
123
Закрытый
4.1
Проверка типов
↗
1 006
1 006
0м 11с
23
Закрытый
4.2
Создание скриптов для монорепы
↗
897
897
0м 29с
25
Закрытый
4.3
Стандартизация стиля TypeScript кода с помощью ESLint
↗
848
848
1м 37с
20
Закрытый
4.4
Автоматический вызов проверок и фиксов при коммите
↗
769
769
0м 18с
16
Закрытый
4.5
Стандартизация стиля сообщений в Git коммитах
↗
717
717
1м 42с
19
Закрытый
4.6
Поддержите автора подпиской
↗
607
607
0м 12с
20
5. Роутер
2 урока
1 567
1 567
1м
49
Закрытый
5.1
Добавление React Router
↗
873
873
1м 31с
23
Закрытый
5.2
Улучшение типизации React Router
↗
694
694
0м 25с
26
6. Вспомогательные библиотеки
2 урока
1 326
1 326
1м
46
Закрытый
6.1
Знакомстов с Lodash, генерация фейкового контента
↗
687
687
0м 17с
22
Закрытый
6.2
Знакомство с Zod и создание tRPC процедуры с инпутом
↗
639
639
0м 16с
24
7. Вёрстка
7 уроков
4 003
4 003
2м
121
Закрытый
7.1
Создание Layout компонента общего для всех страниц
↗
726
726
0м 9с
19
Закрытый
7.2
Добавлям CSS стили с применением SCSS
↗
677
677
1м 43с
21
Закрытый
7.3
Создание очередной страницы веб-приложения
↗
569
569
0м 9с
17
Закрытый
7.4
Создание переиспользуемых компонентов
↗
545
545
0м 14с
19
Закрытый
7.5
Стандартизация стиля SCSS файлов с помощью Stylelint
↗
522
522
0м 29с
14
Закрытый
7.6
Проверка валидности SCSS файлов
↗
507
507
0м 16с
15
Закрытый
7.7
Поддержите автора подпиской
↗
457
457
0м 12с
16
8. Форма
6 уроков
3 129
3 129
2м
123
Закрытый
8.1
Форма: база
↗
600
600
0м 29с
23
Закрытый
8.2
Форма: инпут компоненты
↗
522
522
0м 15с
13
Закрытый
8.3
Форма: Formik
↗
526
526
0м 28с
21
Закрытый
8.4
Форма: валидация
↗
495
495
0м 12с
24
Закрытый
8.5
Форма: забота о UX
↗
498
498
0м 8с
19
Закрытый
8.6
Форма: Zod валидация
↗
488
488
0м 16с
23
9. Бэкенд-фронтенд, уровень 2
5 уроков
2 347
2 347
1м
96
Закрытый
9.1
Разделение tRPC бэкенда на отдельные файлы
↗
531
531
0м 5с
21
Закрытый
9.2
Автоматическая генерация индекс файла
↗
461
461
0м 15с
17
Закрытый
9.3
Добавление tRPC мутации
↗
467
467
0м 22с
19
Закрытый
9.4
Переиспользование логики валидации бэка на фронте
↗
451
451
0м 7с
21
Закрытый
9.5
Ограничение на импорт кода бэкенда во фронт
↗
437
437
0м 16с
18
10. Рефакторинг, уровень 1
9 уроков
3 709
3 709
1м
173
Закрытый
10.1
Форма: загрузка
↗
493
493
0м 6с
18
Закрытый
10.2
Форма: успех
↗
418
418
0м 5с
20
Закрытый
10.3
Форма: ошибка
↗
407
407
0м 10с
21
Закрытый
10.4
Стили: Input
↗
419
419
0м 4с
20
Закрытый
10.5
Стили: Textarea
↗
398
398
0м 14с
21
Закрытый
10.6
Компоненты: Alert
↗
406
406
0м 3с
17
Закрытый
10.7
Компоненты: Button
↗
400
400
0м 3с
21
Закрытый
10.8
Компоненты: FormItems
↗
401
401
0м 4с
23
Закрытый
10.9
Поддержите автора подпиской
↗
367
367
0м 12с
12
11. База данных, уровень 1
7 уроков
2 973
2 973
3м
113
Закрытый
11.1
Поднятие базы данных PostgreSQL
↗
519
519
1м 32с
18
Закрытый
11.2
Prisma: подключение базы данных (БД)
↗
466
466
1м 52с
18
Закрытый
11.3
Передача клиента Prisma в tRPC контекст
↗
419
419
0м 19с
20
Закрытый
11.4
Prisma: поиск по записям БД через Prisma клиент
↗
409
409
0м 7с
13
Закрытый
11.5
Prisma: создание записей в БД
↗
400
400
0м 6с
16
Закрытый
11.6
Prisma: добавление новых полей в существующую таблицу
↗
378
378
1м 34с
14
Закрытый
11.7
Используем superjson для получения даты с бэкенда
↗
382
382
0м 20с
14
12. Авторизация
12 уроков
4 386
4 386
3м
204
Закрытый
12.1
Авторизация: модель пользователя + эндпоинт регистрации
↗
442
442
0м 13с
16
Закрытый
12.2
Использование инструмента для ручного вызова tRPC эндпоинтов
↗
375
375
0м 27с
16
Закрытый
12.3
PostgreSQL: GUI для работы с БД
↗
386
386
0м 10с
15
Закрытый
12.4
Авторизация: страница регистрации
↗
376
376
0м 5с
20
Закрытый
12.5
Авторизация: эндпоинт для входа
↗
365
365
0м 9с
18
Закрытый
12.6
Авторизация: страница для входа
↗
355
355
0м 3с
17
Закрытый
12.7
Авторизация как таковая
↗
368
368
1м 44с
17
Закрытый
12.8
Environment Variables: backend
↗
354
354
0м 25с
17
Закрытый
12.9
Environment Variables: webapp
↗
344
344
0м 14с
17
Закрытый
12.10
Авторизация: соль
↗
366
366
0м 9с
18
Закрытый
12.11
Авторизация: валидация токена
↗
345
345
0м 15с
19
Закрытый
12.12
Поддержите автора подпиской
↗
310
310
0м 12с
14
13. База данных, уровень 2
2 урока
712
712
1м
28
Закрытый
13.1
Prisma: связанные сущности
↗
357
357
0м 19с
13
Закрытый
13.2
CRUD: Редактирование сущностей
↗
355
355
0м 12с
15
14. Рефакторинг, уровень 2
6 уроков
1 917
1 917
1м
93
Закрытый
14.1
Форма: создание своей обёртки
↗
340
340
0м 9с
17
Закрытый
14.2
Создание контекста клиентского приложения
↗
339
339
0м 8с
15
Закрытый
14.3
Создание обёртки для повторяющейся логики страниц веб-приложения
↗
317
317
0м 17с
17
Закрытый
14.4
Улучшение типизации обёртки страниц
↗
309
309
0м 23с
18
Закрытый
14.5
Добавление страницы 404
↗
309
309
0м 8с
12
Закрытый
14.6
Распределение файлов по папкам при увеличении кодовой базы
↗
303
303
0м 18с
14
15. Новые фичи
7 уроков
2 162
2 162
1м
76
Закрытый
15.1
Редактирование профиля пользователя
↗
327
327
0м 6с
13
Закрытый
15.2
Очередное улучшение типизации обёртки страниц
↗
307
307
0м 7с
9
Закрытый
15.3
Изменение пароля
↗
313
313
0м 5с
11
Закрытый
15.4
Бесконечная подгрузка данных по нажатию кнопки
↗
308
308
0м 15с
10
Закрытый
15.5
Бесконечная подгрузка данных при скроле
↗
309
309
0м 13с
12
Закрытый
15.6
Делаем загрузку красивой
↗
307
307
0м 6с
11
Закрытый
15.7
Поддержите автора подпиской
↗
291
291
0м 12с
10
16. База данных, уровень 3
3 урока
916
916
0м
34
Закрытый
16.1
Сложные связи сущностей в БД, оптимистический ответ на клиенте
↗
325
325
0м 8с
13
Закрытый
16.2
Функционал поиска по базе данных, автоматическая отправка формы
↗
298
298
0м 9с
10
Закрытый
16.3
Права пользователей
↗
293
293
0м 10с
11
17. Картинки
5 уроков
1 475
1 475
1м
46
Закрытый
17.1
Установка HTML title на страницы веб-приложения
↗
314
314
0м 8с
9
Закрытый
17.2
Добавление favicon
↗
292
292
0м 18с
11
Закрытый
17.3
Добавление иконок
↗
285
285
0м 9с
9
Закрытый
17.4
Добавление подгружаемых картинок
↗
291
291
0м 12с
9
Закрытый
17.5
Добавление встроенных картинок
↗
293
293
0м 9с
8
18. База данных, уровень 4
1 урок
290
290
0м
10
Закрытый
18.1
Prisma: кастомные миграции
↗
290
290
0м 29с
10
19. E-mail
7 уроков
1 926
1 926
2м
49
Закрытый
19.1
E-mail: создание шаблонов с помощью MJML
↗
301
301
0м 20с
8
Закрытый
19.2
E-mail: создание и использование функций отправки
↗
274
274
0м 14с
7
Закрытый
19.3
E-mail: обработка шаблонов с помощью Handlebars
↗
270
270
0м 13с
7
Закрытый
19.4
Регистрация домена
↗
277
277
0м 17с
6
Закрытый
19.5
E-mail: Подключение домена к Brevo
↗
280
280
0м 4с
6
Закрытый
19.6
E-mail: реальная отправка писем с помощью Brevo
↗
272
272
0м 19с
8
Закрытый
19.7
Поддержите автора подпиской
↗
252
252
0м 12с
7
20. Бэкенд-фронтенд, уровень 3
4 урока
1 119
1 119
1м
34
Закрытый
20.1
Создание опциональных env переменных
↗
303
303
0м 6с
8
Закрытый
20.2
Импорт роутов фронта на бэкенд
↗
276
276
0м 13с
8
Закрытый
20.3
Делаем обёртку для создания роутов
↗
273
273
0м 9с
10
Закрытый
20.4
Вытягиваем общие env переменные для фронта и бэка
↗
267
267
0м 8с
8
21. Ещё новые фичи
4 урока
1 132
1 132
1м
36
Закрытый
21.1
CRON: выполнение задач по расписанию
↗
301
301
0м 16с
10
Закрытый
21.2
PostgreSQL: написание сложных запросов
↗
295
295
0м 18с
9
Закрытый
21.3
MJML + Handlebars: циклы и прочие хелперы
↗
268
268
0м 7с
10
Закрытый
21.4
Monorepo: shared workspace
↗
268
268
0м 11с
7
22. Стэйт-менeджмент
1 урок
322
322
0м
7
Закрытый
22.1
Стэйт-менeджмент веб-приложения
↗
322
322
0м 25с
7
23. Логирование и работа с ошибками
15 уроков
3 774
3 774
2м
93
Закрытый
23.1
Логирование: добавление логгера
↗
276
276
0м 10с
8
Закрытый
23.2
Логирование: стандартизация параметров и сериализация ошибок
↗
254
254
0м 9с
7
Закрытый
23.3
Логирование: красивый вывод логов во время разработки
↗
248
248
0м 10с
6
Закрытый
23.4
Логирование: tRPC бэкенд
↗
252
252
0м 6с
6
Закрытый
23.5
Логирование: Prisma
↗
249
249
0м 8с
7
Закрытый
23.6
Логирование: фильтрация логов
↗
245
245
0м 9с
6
Закрытый
23.7
Логирование: секретные данные
↗
249
249
0м 11с
6
Закрытый
23.8
Логирование: Express
↗
253
253
0м 4с
6
Закрытый
23.9
Логирование: tRPC клиент
↗
247
247
0м 10с
6
Закрытый
23.10
Sentry: отлавливание ошибок веб-приложения
↗
264
264
0м 10с
7
Закрытый
23.11
Создание нового типа ошибок ExpectedError
↗
245
245
0м 8с
6
Закрытый
23.12
Sentry: sourcemap веб-приложения
↗
252
252
0м 13с
6
Закрытый
23.13
Sentry: отлавливание ошибок бэкенда
↗
249
249
0м 8с
6
Закрытый
23.14
Sentry: sourcemap бэкенда
↗
251
251
0м 18с
6
Закрытый
23.15
Поддержите автора подпиской
↗
240
240
0м 12с
4
24. Тесты
6 уроков
1 567
1 567
2м
39
Закрытый
24.1
Тесты: юнит тесты
↗
333
333
0м 28с
6
Закрытый
24.2
Тесты: интеграционные тесты
↗
260
260
0м 14с
6
Закрытый
24.3
Тесты: запрет на импорт тестов в основной код
↗
242
242
0м 8с
7
Закрытый
24.4
Тесты: переменные окружения
↗
244
244
0м 27с
8
Закрытый
24.5
Тесты: мок модулей
↗
247
247
0м 16с
6
Закрытый
24.6
Улучшение типизации функций pick & omit
↗
241
241
0м 13с
6
25. Файлы
4 урока
1 054
1 054
1м
25
Закрытый
25.1
Загрузка изобрежния на Cloudinary
↗
289
289
0м 13с
6
Закрытый
25.2
Загрузка нескольких изображений на Cloudinary
↗
248
248
0м 12с
7
Закрытый
25.3
Загрузка файла на AWS S3
↗
264
264
0м 30с
6
Закрытый
25.4
Загрузка нескольких файлов на AWS S3
↗
253
253
0м 4с
6
26. Деплой
9 уроков
2 629
2 629
2м
54
Закрытый
26.1
Стандартизируем общие env переменные для фронта и бэка
↗
311
311
0м 12с
6
Закрытый
26.2
Продуктовая аналитика с помощью Mixpanel
↗
276
276
0м 6с
3
Закрытый
26.3
Раздача веб-приложения через бэкенд
↗
278
278
0м 5с
7
Закрытый
26.4
Получение переменных окружения фронта с бэкенда
↗
264
264
0м 5с
6
Закрытый
26.5
DevOps: Создание Dockerfile, билд имейджа, запуск контейнера
↗
321
321
1м 43с
6
Закрытый
26.6
DevOps: Деплой в Heroku
↗
297
297
0м 26с
7
Закрытый
26.7
DevOps: Автоматический деплой в Heroku через GitHub Actions
↗
292
292
0м 11с
7
Закрытый
26.8
Отправка логов в Datadog
↗
299
299
0м 8с
7
Закрытый
26.9
Поддержите автора подпиской
↗
291
291
0м 12с
5
27. Завершние
4 урока
1 723
1 723
0м
37
Закрытый
27.1
Анализ фронтового бандла
↗
426
426
0м 9с
7
Закрытый
27.2
Поддержка старых браузеров
↗
310
310
0м 7с
6
Закрытый
27.3
Автоматическое подставление CSS префиксов
↗
393
393
0м 8с
7
Закрытый
27.4
Окончание
↗
594
594
0м 2с
17