50 Модуль 10 Реальные проекты 18 мин урок 25 из 25

Финал: собираем портфолио и идём работать

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

Что ты научишься делать

  • Соберёшь портфолио, которое показывает мышление, а не только результат
  • Выложишь сайт в интернет и получишь работающую ссылку
  • Поймёшь, что писать в резюме и чему учиться после вёрстки

#Портфолио — это не галерея

Самая частая ошибка: страница со скриншотами и подписями «лендинг», «магазин». Такое портфолио ничего не сообщает — красивую картинку мог сделать кто угодно.

Работодателя интересует не результат, а как ты думаешь. Три проекта с разбором решений весят больше, чем десять скриншотов.

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

Так не надо

<article class="work">
  <img src="shot.jpg" alt="Лендинг">
  <h3>Лендинг кофейни</h3>
  <p>Адаптивная вёрстка, HTML, CSS</p>
</article>

Перечисление технологий ничего не говорит: их знает каждый выпускник курсов. Непонятно, что именно ты решал.

Так надо

<article class="work">
  <h3>Лендинг кофейни</h3>
  <p class="work__task">Задача: страница записи на дегустацию,
    срок — неделя.</p>
  <p class="work__solve">Сложность была в карточках тарифов:
    названия разной длины ломали ряд. Решил через subgrid
    с запасным вариантом на флексах.</p>
  <a href="…">Живая версия</a>
  <a href="…">Код на GitHub</a>
</article>

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

#Структура сайта

Портфолио — это многостраничный сайт, а не одна длинная страница. Отдельная страница под каждый проект даёт две вещи: место для подробного разбора и ссылку, которую можно отправить точечно.

HTMLСтруктура файлов
portfolio/  index.html            обо мне + три работы карточками  works/    landing.html        разбор первого проекта    dashboard.html    shop.html  about.html            подробнее о себе и контакты  styles/    main.css    base/  layout/  components/  assets/    fonts/  img/

#Публикация за десять минут

Сайт из статических файлов выкладывается бесплатно и без сервера. Два самых простых способа.

  1. Заведи репозиторий

    Создай на GitHub репозиторий и загрузи туда файлы портфолио. Через веб-интерфейс это делается перетаскиванием, командная строка не обязательна.

  2. Включи GitHub Pages

    В настройках репозитория раздел Pages, источник — ветка main, папка корневая. Через минуту сайт доступен по адресу вида имя.github.io/portfolio.

  3. Или перетащи папку в Netlify

    Ещё проще: на странице развёртывания Netlify перетащи папку с сайтом мышью. Ссылка появится сразу, без репозитория.

  4. Проверь пути

    На GitHub Pages сайт часто лежит в подпапке. Абсолютные пути вроде /styles/main.css сломаются — используй относительные.

  5. Подключи домен

    Необязательно, но приятно. Своё имя в адресе стоит несколько сотен рублей в год и настраивается парой записей у регистратора.

#Как оформить код на GitHub

Ссылку на репозиторий откроют. Что там увидят — часть впечатления.

  • Файл README. Что за проект, скриншот, ссылка на живую версию, как запустить. Пять строк лучше, чем ничего.
  • Осмысленные коммиты. «Добавил карточки тарифов» вместо «фикс», «правки», «ещё раз».
  • Никакого мусора. Папки редактора, системные файлы и черновики — в .gitignore.
  • Понятная структура. Та самая, из сорокового урока.
HTMLREADME.md проекта
# Лендинг кофейни «Полка»Страница записи на дегустацию. Чистые HTML и CSS, без библиотек.**Живая версия:** https://имя.github.io/coffee-landing## Что интересного- Карточки тарифов выровнены через subgrid,  запасной вариант на флексах через @supports- Аккордеон вопросов на <details name> — без JavaScript- Тёмная тема на семантических токенах## ЗапускОткрыть index.html в браузере. Сборка не нужна.

#Резюме верстальщика

Резюме читают меньше минуты. Работает конкретика, не прилагательные.

Не работаетРаботает
«Ответственный, обучаемый»Ссылка на портфолио первой строкой
«Знаю HTML, CSS, немного JS»«Семантическая вёрстка, Grid и Flexbox, адаптив от 320px, доступность по WCAG AA»
«Есть опыт вёрстки»«Три проекта в портфолио: лендинг, дашборд, каталог»
Список из двадцати технологийПять, которыми реально пользуешься
«Опыт работы: нет»«Учебные проекты с разбором решений — ссылки ниже»

#Где брать практику

  • Перевёрстывай существующие сайты. Возьми страницу, которая нравится, и собери сама. Сравнение с оригиналом покажет, где ты пошёл длинным путём.
  • Бесплатные макеты. Дизайнеры выкладывают работы в общий доступ — там есть и мобильные версии, и состояния.
  • Мелкие заказы у знакомых. Сайт для парикмахерской или частного мастера. Настоящее ограничение по срокам и живые правки — то, чего не даст учебный проект.
  • Открытый код. Исправить опечатку в документации или починить контраст в чужом проекте — нормальный первый вклад.
  • Собственные инструменты. Считалка, список дел, страница с рецептами. Такие проекты доводят до конца охотнее.

#Что учить дальше

Вёрстка — законченная профессия, но одна она ограничивает круг задач. Порядок, в котором обычно двигаются дальше.

ЧтоЗачемКогда браться
JavaScriptВсё, что нельзя сделать на CSS: данные, логика, взаимодействиеСразу после вёрстки — самый естественный следующий шаг
Git глубжеВетки, слияния, разрешение конфликтовПараллельно, по мере надобности
Инструменты сборкиСборка, оптимизация, современный синтаксисКогда проект перерос статические файлы
ФреймворкVue, React или Svelte — для больших приложенийПосле уверенного JavaScript, не раньше
TypeScriptТипы, которые ловят ошибки до запускаКогда проекты станут большими
Основы бэкендаПонимать, откуда берутся данныеКогда захочется делать сайт целиком

#Что ты теперь умеешь

Пятьдесят уроков позади. Стоит перечислить вслух, потому что через месяц это будет казаться самоочевидным.

Ты собираешь страницу с нуля: семантическая разметка, любая раскладка на флексах и гридах, адаптив от телефона до широкого экрана. Управляешь каскадом слоями, а не важностью. Делаешь состояния интерфейса без скриптов там, где это уместно, и понимаешь, где неуместно.

Знаешь, почему сайт тормозит и как это измерить. Понимаешь доступность не как список требований, а как работу с фокусом, ролями и объявлениями. Умеешь оценить цену техники: поддержку браузерами, производительность, сложность поддержки.

И главное — можешь объяснить любое своё решение. Это отличает верстальщика от человека, который копирует код с форумов.

#Курс по JavaScript

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

Пока его нет — лучшее, что можно сделать, это довести портфолио до состояния, за которое не стыдно, и выложить его в интернет. Ссылка работает лучше любого сертификата.

Где спотыкаются почти все

Портфолио из скриншотов без разбора

Почему Картинка не показывает мышление. Работодатель не понимает, что именно ты решал и почему.

Как надо На каждый проект: задача, трудность, решение, что сделал бы иначе.

Абсолютные пути на GitHub Pages

Почему Сайт лежит в подпапке — путь от корня ведёт в пустоту. Локально всё работает, после публикации стилей нет.

Как надо Только относительные пути внутри проекта.

Двадцать технологий в резюме

Почему Список, где половина видена один раз, вызывает недоверие ко всему остальному.

Как надо Пять, которыми пользуешься. Остальное — при случае в разговоре.

Фреймворк вместо языка

Почему Без понимания JavaScript работа сводится к копированию образцов, и любая нештатная ситуация ставит в тупик.

Как надо Сначала язык, потом надстройки над ним.

Портфолио portfolio
Набор работ с разбором решений, а не галерея скриншотов.
Статический хостинг static hosting
Публикация сайта из файлов без серверного кода: GitHub Pages, Netlify.
Относительный путь relative path
Адрес от текущего файла. Единственный безопасный вариант при публикации в подпапку.
Открытый код open source
Проекты с общедоступным кодом, куда можно вносить вклад.

Проверь себя

  1. Что важнее показать в портфолио?

    Картинку мог сделать кто угодно. Оценивают ход мысли и умение его объяснить.

  2. После публикации на GitHub Pages пропали стили. Почему вероятнее всего?

    Локально путь от корня работает, на Pages — нет. Внутри проекта нужны относительные пути.

  3. Сколько проектов достаточно для портфолио начинающего?

    Разные жанры показывают широту, разбор — глубину. Десять однотипных работ сообщают меньше.

  4. Что учить сразу после вёрстки?

    Фреймворк — надстройка над языком. Без языка получается работа по образцу без понимания.

  5. Что писать в резюме вместо «знаю HTML и CSS»?

    Резюме читают меньше минуты. Работает конкретика, а не прилагательные и не длина списка.

Задание

Карточка проекта для портфолио

Свёрстай карточку работы так, как её стоит показывать: заголовок, короткое описание задачи, разбор решения, две ссылки — на живую версию и на код.

Требования: article с семантической разметкой, у внешних ссылок rel="noopener" и target="_blank", у ссылок осмысленный текст (не «здесь» и не «подробнее»), видимая обводка фокуса.

Открыть в песочнице
    Подсказка 1

    Структура: h3, потом два абзаца — задача и разбор решения, потом блок со ссылками.

    Подсказка 2

    Ссылка: <a href="…" target="_blank" rel="noopener">Живая версия</a> — текст говорит, куда ведёт.

    Подсказка 3

    Фокус: .work a:focus-visible { outline: 3px solid #6544e0; outline-offset: 2px; }

    Показать решение
    HTMLindex.html
    <article class="work">  <h3 class="work__title">Лендинг кофейни</h3>  <p class="work__task">Задача: страница записи на дегустацию, срок неделя, вся вёрстка без библиотек.</p>  <p class="work__solve">Сложность была в карточках тарифов: названия разной длины ломали ряд кнопок. Сделал через subgrid с запасным вариантом на флексах — на старых браузерах кнопки просто прижаты вниз.</p>  <p class="work__links">    <a href="https://example.com/coffee" target="_blank" rel="noopener">Живая версия</a>    <a href="https://github.com/user/coffee" target="_blank" rel="noopener">Код на GitHub</a>  </p></article>
    CSSstyle.css
    .work {  display: grid;  gap: 10px;  max-width: 420px;  padding: 18px;  background: #f5f5fa;  border-radius: 14px;}.work__title { margin: 0; font-size: 18px; }.work p { margin: 0; font-size: 14px; color: #5b6070; }.work__links { display: flex; gap: 12px; }.work__links a { color: #6544e0; font-weight: 600; font-size: 14px; }.work a:focus-visible {  outline: 3px solid #6544e0;  outline-offset: 2px;  border-radius: 4px;}

    Перед тем как отправлять резюме