DevSpace — персональне портфоліо
Фінальний проект всього курсу. Ти побудуєш і задеплоїш справжній персональний сайт, який зможеш використовувати як портфоліо. Цей проект об'єднує все, що ти вивчив: від HTML та CSS до Next.js та деплою.
Підготовка
npx create-next-app@latest my-portfolio --typescript --tailwind --app
cd my-portfolio
npm install gray-matter
Завдання
1. Сторінки
Створи наступні сторінки:
| Сторінка | URL | Опис |
|---|---|---|
| Головна | / | Hero-секція, коротко про себе, ключові навички |
| Про мене | /about | Детальна інформація, досвід, освіта |
| Проекти | /projects | Галерея проектів з описом та посиланнями |
| Блог | /blog | Список статей |
| Стаття | /blog/[slug] | Сторінка окремої статті |
| Контакти | /contact | Форма зворотного зв'язку |
2. Головна сторінка
- Hero-секція з ім'ям, посадою та коротким описом
- Секція навичок (React, TypeScript, Next.js тощо) — як бейджики або прогрес-бари
- 2-3 виділених проекти (посилання на
/projects) - CTA-кнопка "Зв'язатися" →
/contact
3. Сторінка проектів
Мінімум 3 проекти (можеш використати свої ДЗ з курсу!):
Кожен проект — картка з:
- Назва та короткий опис
- Технології (бейджики)
- Скріншот або placeholder
- Посилання: "Код" (GitHub) та "Демо" (якщо є)
4. Блог з MDX
Створи мінімум 3 статті у content/posts/:
---
title: "Що я дізнався про React"
date: "2026-02-01"
description: "Мої враження від вивчення React"
---
- Список статей на
/blog(відсортовані за датою) generateStaticParamsдля SSG сторінок статейgenerateMetadataдля SEO кожної статті
5. Форма контактів
Client Component з полями: ім'я, email, повідомлення.
- Валідація на клієнті
- При submit — відправка на API route
/api/contact - API route: валідація +
console.logданих (або збереження в JSON-файл) - Після відправки — повідомлення "Дякую! Я відповім найближчим часом"
6. Layout та дизайн
- Спільний layout: header з навігацією + footer
NavLinkз active-стилем для поточної сторінки- Responsive дизайн (mobile-first)
- Tailwind CSS для стилізації
next/fontдля підключення шрифтуnext/imageдля оптимізації зображень
7. SEO
metadataдля кожної сторінки (title, description)- Open Graph метадані
robots.txtтаsitemap.xml(статичні файли вpublic/)
8. Deploy на Netlify
- Запуш проект на GitHub
- Підключи репозиторій до Netlify
- Налаштуй build command:
npm run build - Додай environment variables (якщо є)
- Перевір, що сайт доступний за URL
Порада
Netlify автоматично визначає Next.js проекти. Після підключення GitHub-репозиторію деплой відбувається автоматично при кожному push.
Структура проекту
src/
├── app/
│ ├── layout.tsx
│ ├── page.tsx # Головна
│ ├── about/page.tsx
│ ├── projects/page.tsx
│ ├── blog/
│ │ ├── page.tsx # Список статей
│ │ └── [slug]/page.tsx
│ ├── contact/page.tsx
│ └── api/
│ └── contact/route.ts
├── components/
│ ├── Header.tsx
│ ├── Footer.tsx
│ ├── ProjectCard.tsx
│ ├── PostCard.tsx
│ ├── SkillBadge.tsx
│ └── ContactForm.tsx
└── lib/
└── posts.ts # Утиліти для роботи з MDX
content/
└── posts/
├── react-journey.mdx
├── css-tricks.mdx
└── first-deploy.mdx
public/
├── images/
├── robots.txt
└── sitemap.xml
Бонус
- Темна/світла тема через Context API або
next-themes - Анімації при скролі (CSS
@keyframesабоIntersectionObserver) - Кастомний домен (безкоштовний
.netlify.appабо свій) - Лічильник переглядів статей (API route + JSON-файл)
- "Зараз слухаю" віджет з улюбленим плейлистом
Критерії оцінки
| Критерій | Бали |
|---|---|
| Головна сторінка (hero, навички, проекти) | 10 |
| Сторінка проектів (мін. 3 проекти з описом) | 10 |
| Блог з MDX (мін. 3 статті, SSG, dynamic routes) | 15 |
| Форма контактів (валідація + API route) | 10 |
| Layout, навігація, footer | 10 |
| Responsive дизайн (Tailwind, mobile-first) | 10 |
| SEO (metadata, OG, generateMetadata) | 10 |
| next/font + next/image | 5 |
| Deploy на Netlify (live URL) | 15 |
| Загальна якість дизайну та коду | 5 |
| Бонус: Тема / Анімації / Домен / Лічильник | +20 |