Хорошее портфолио за полминуты отвечает на три вопроса: кто вы, что умеете и где посмотреть работающий код. Для первой версии хватит одного адаптивного экрана, трёх честных проектов и понятных кнопок «Демо» и «Код».
Портфолио не обязано впечатлять анимацией. Его задача проще: провести человека от вашего имени к доказательствам навыков. Поэтому начнём со структуры и содержимого, а декоративные эффекты оставим после проверки ссылок и телефона.
Одна роль, короткое обещание и стек без рейтингов.
Карточка проекта показывает задачу, решение и личный вклад.
Контакты, резюме, репозиторий и демо доступны без квеста.
Что должно быть в первом портфолио
Разделите страницу на hero, проекты, краткую информацию и контакты. В hero оставьте одну главную кнопку. В проекте показывайте не только скриншот, но и исходную задачу, две технические детали, ссылку на демо и репозиторий.
| Раздел | Что положить | Что убрать |
|---|---|---|
| Первый экран | Имя, роль, специализация | Длинную биографию |
| Проекты | Задача, вклад, результат | Список всех учебных файлов |
| О себе | Контекст и интерес | Оценки навыков в процентах |
| Контакты | Почта и профиль | Неактуальные соцсети |
После этого шага у каждой части есть одна роль. Интерфейс собирает действие, логика меняет состояние, а вывод показывает признак успеха. Это проще отлаживать, чем один большой обработчик.

От обещания к доказательству. Каждый шаг виден без скрытого меню
Собираем страницу и карточки проектов
Ниже минимальный каркас. Сетка auto-fit сама переносит карточки, а clamp делает заголовок адаптивным без десятка точек перелома. Ссылки имеют понятные подписи, поэтому пользователь заранее знает, куда попадёт.
<header class="hero">
<p class="eyebrow">Frontend-разработчик</p>
<h1>Аня делает быстрые и понятные веб-интерфейсы</h1>
<p>JavaScript, TypeScript и React. Люблю формы, доступность и чистые состояния.</p>
<a class="primary" href="#projects">Посмотреть проекты</a>
</header>
<main id="projects" class="projects">
<article class="project">
<div class="preview" aria-hidden="true">Task Flow</div>
<h2>Планировщик задач</h2>
<p>Собрала фильтры, сохранение и управление с клавиатуры.</p>
<ul><li>JavaScript</li><li>localStorage</li><li>CSS Grid</li></ul>
<p><a href="https://example.com">Демо</a> <a href="https://github.com/example">Код</a></p>
</article>
</main>
<style>
*{box-sizing:border-box}body{margin:0;color:#16182d;background:#f6f7fb;font:16px/1.6 system-ui}
.hero,.projects{width:min(1100px,calc(100% - 32px));margin:auto}.hero{padding:96px 0 64px}
h1{max-width:820px;font-size:clamp(2.4rem,7vw,5.4rem);line-height:1.02}
.primary{display:inline-block;padding:14px 20px;color:white;background:#5b4bff;border-radius:14px;text-decoration:none}
.projects{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:24px;padding-bottom:80px}
.project{padding:24px;background:white;border:1px solid #e2e4ef;border-radius:24px}.preview{padding:48px 24px;border-radius:16px;background:#16182d;color:white;font-size:2rem}
li{display:inline-block;margin-right:8px;padding:4px 10px;background:#eceaff;border-radius:999px}
</style>Первый экран сразу называет роль и специализацию. Каждый проект объясняет задачу и личный вклад. Демо и код открываются отдельными понятными ссылками. Сетка работает от 320 пикселей до большого монитора.

Факты работают сильнее оценок. Сравнение показывает, какой вариант легче поддерживать и проверять.
Как описывать проекты без пустых прилагательных
Карточку проекта полезно читать как короткий кейс: было ограничение, вы приняли решение, появился проверяемый результат. Даже маленький Todo-лист выглядит сильнее, если указать клавиатурное управление, сохранение и ссылку на живую версию.
| Слабая фраза | Конкретная версия |
|---|---|
| Современный сайт | Адаптив от 320 px, Lighthouse 95+ |
| Удобное приложение | Добавление задачи с клавиатуры, фильтры и localStorage |
| Работал в команде | Сделал форму и провёл два code review |
| Знаю React | Собрал маршруты, запросы и состояния загрузки |
Сохраняйте в одном месте то, что может измениться. Если одно и то же значение скопировано в три функции, после первой правки они начнут расходиться. Один объект состояния и одна функция отрисовки снимают эту проблему.
Практика: проверяем ссылки и телефон
Откройте портфолио в приватном окне и пройдите путь как незнакомый человек. Все репозитории должны быть публичными, демо не должно требовать локального сервера, почта должна копироваться без ошибки. Затем проверьте страницу на телефоне и клавиатурой.
- Замените имя, роль и текст первого экрана.
- Оставьте три проекта, которые можно открыть.
- Для каждого напишите задачу, вклад и две детали.
- Проверьте все Демо и Код в приватном окне.
- Сузьте страницу до 320 пикселей.
- Опубликуйте через GitHub Pages и повторите проверку.
За 30 секунд понятны роль и стек. У каждого проекта есть доказательство: демо или код. Нет выдуманных процентов владения технологиями. Контакты работают, а страница читается на телефоне.

Четыре окна настоящего просмотра. Пройдите все четыре сценария перед публикацией проекта.
Доводим портфолио до публикации
Первую версию можно опубликовать как статический сайт. После этого улучшайте один проект, а не бесконечно полируйте фон. Новый сильный кейс приносит портфолио больше пользы, чем ещё одна анимация появления заголовка.
Выберите три и объясните различия.
Проверяйте в приватном окне и с телефона.
Процент ничем не подтверждён.
Контент и фокус должны работать без неё.
Что получится в итоге

Финальная страница сразу показывает специализацию, три проекта с доказательствами и простой путь к контакту.
Сколько проектов достаточно для старта?
Трёх законченных и проверяемых проектов обычно полезнее, чем длинного списка одинаковых заготовок.
Что написать в карточке?
Задачу, личный вклад, две технические детали и ссылки на результат.
Что проверить перед отправкой?
Ссылки, мобильную ширину, клавиатуру и публичный доступ.
Как понять, что проект готов?
Он повторяет целевой сценарий несколько раз подряд, понятно реагирует на ошибочный ввод и не теряет состояние при обычных действиях.
Можно ли копировать код целиком?
Можно как стартовую точку, но сначала замените значения из примера, затем запустите проект по шагам. Если вы не можете объяснить одну строку, её лучше разобрать до следующего шага.
Основу страницы можно собрать в курсе HTML и CSS, интерактив добавить в курсе JavaScript. Репозитории оформите по гайду загрузки проекта на GitHub.
Профиль свяжите с GitHub README, а адаптив проверьте по отдельной статье. В Кодике каждый кейс можно развивать как самостоятельный проект.