Веб-дизайн, UX и конверсия
Типографика, макеты, дизайн-системы и удобные интерфейсы для веба.
56 материаловМатериалы для проекта «Информационный сайт ProfessorWeb» объединяют несколько направлений. Начните с разделов ниже.
Типографика, макеты, дизайн-системы и удобные интерфейсы для веба.
56 материаловHTML, CSS, JavaScript, TypeScript, компоненты и статические сайты.
397 материаловДомены, хостинг, серверы, автоматические выпуски и сопровождение.
121 материалБыстрая загрузка, тестирование, доступность и защита данных.
155 материаловТехническое SEO, запросы, Google Search Console и Яндекс Вебмастер.
71 материалСобытия, Метрика, GA4 и измерение результатов сайта.
45 материаловПубликации, соцсети, видео, распространение и работа с репутацией.
26 материаловEmail, коммуникации и жизненный цикл клиента.
17 материаловДобавляем локальные закладки, завершение и вычисляемый прогресс через runes.
Выносим карточку урока в компонент с типизированными props и callback без скрытого владения прогрессом.
Создаём адресный каталог, динамическую страницу урока и layout кабинета.
Разделяем universal load и server load, сериализацию и публичную проекцию личного состояния.
Выбираем режим формирования HTML для публичного каталога и персональных страниц.
Сохраняем компактный вид в localStorage после onMount без обращения к window при SSR.
Делаем фильтр каталога воспроизводимым по ссылке и сохраняем нативную GET-форму.
Описываем POST-команду с проверкой сессии, идентификатора и желаемого состояния.
Добавляем профиль с серверной валидацией, сохранённым вводом и доступной ошибкой поля.
Добавляем ожидание POST и обновление страницы, сохраняя работу формы без JavaScript.
Связываем серверный репозиторий с непрозрачной сессией и проверяем владельца каждого действия.
Различаем ожидаемый отказ и сбой сервера, сохраняем семантику кнопок, статусы и фокус.
Собираем конечные исходники, фиксируем ограничения хранения, сессий и будущего выпуска.
12 последовательных уроков: учебный проект «События», причины решений, проверенные API и честно обозначенные ограничения.
Определяем поток «События», вопросы отчёта и границы аналитического хранилища.
Задаём обязательные поля, анонимный идентификатор и правила обработки времени без лишних пользовательских данных.
Создаём исходную MergeTree-таблицу с UTC-временем, UUID и низкокардинальными признаками.
Загружаем JSONEachRow через SQL/HTTP и различаем повтор доставки, принятую партию и исходный файл.
Связываем ORDER BY с запросами, отделяя индекс чтения от уникальности и управления сроками.
Строим ReplacingMergeTree-слой и читаем логические события через FINAL с неизменяемым ключом.
Считаем просмотры и анонимные идентификаторы, не смешивая метрики и проверку доставки.
Строим последовательную воронку по паре браузер–урок с окном24 часа.
Определяем первую наблюдаемую дату и считаем возвращение D1 по календарным днямUTC.
Создаём агрегаты вставок и отделяем их от корректного отчёта по дедуплицированным событиям.