Анализатор страниц — веб-приложение для анализа SEO-пригодности страниц по аналогии с PageSpeed Insights.
Проект разработан в рамках обучения на платформе Hexlet и демонстрирует практическое применение современных подходов веб-разработки на PHP.
- Проверка доступности сайтов
- Анализ основных SEO-параметров (title, h1, description)
- История проверок для каждого добавленного URL
- Валидация введённых адресов
- Responsive дизайн на Bootstrap 5
Backend:
- PHP 8.x
- Slim Framework 4 — микрофреймворк для роутинга и обработки запросов
- Twig — шаблонизатор для рендеринга страниц
- PDO — работа с базой данных PostgreSQL
- Guzzle — HTTP-клиент для запросов к анализируемым сайтам
- DiDOM — парсинг HTML-контента
Frontend:
- Bootstrap 5
Инфраструктура:
- PostgreSQL — хранение данных
- Render.com — хостинг (PaaS)
Dev Tools:
- PHP_CodeSniffer — проверка стандартов кодирования
- PHPStan — статический анализ кода
- Composer — управление зависимостями
- PHP >= 8.1
- Composer
- PostgreSQL >= 13
- Расширения PHP: pdo, pdo_pgsql, dom
git clone https://github.com/gmaslov-dev/php-project-9.git
cd php-project-9composer installСоздайте файл .env в корне проекта:
DATABASE_URL=postgresql://username:password@localhost:5432/page_analyzercomposer db:initИли напрямую:
php bin/init_db.phpЭто создаст необходимые таблицы в базе данных.
php -S localhost:8000 -t publicПриложение будет доступно по адресу: http://localhost:8000
Таблица urls:
id— уникальный идентификаторname— URL сайтаcreated_at— дата добавления
Таблица url_checks:
id— уникальный идентификатор проверкиurl_id— связь с таблицей urlsstatus_code— HTTP статус-кодh1— содержимое тега h1title— содержимое тега titledescription— содержимое meta descriptioncreated_at— дата проверки
- Откройте главную страницу приложения
- Введите URL сайта, который хотите проанализировать
- Нажмите кнопку "Проверить"
- Просмотрите результаты анализа
- При необходимости запустите повторную проверку
composer lintcomposer analyseПроект построен на принципах чистой архитектуры с разделением ответственности:
./src
├── Controller/ # Контроллеры для обработки HTTP-запросов
│ ├── CheckController.php
│ ├── PageController.php
│ └── UrlController.php
├── Database/ # Подключение к базе данных
│ └── Connection.php
├── Entity/ # Модели данных (Data Objects)
│ ├── Check.php
│ ├── Url.php
│ └── UrlWithLastCheck.php
├── Handler/ # Обработчики исключений и ошибок
│ └── ErrorHandler.php
├── Initializer/ # Инициализация компонентов приложения
│ ├── ContainerInitializer.php
│ ├── MiddlewareInitializer.php
│ └── RouteInitializer.php
├── Repository/ # Слой доступа к данным (Data Access Layer)
│ ├── CheckRepository.php
│ └── UrlRepository.php
├── Service/ # Бизнес-логика приложения
│ ├── CheckService.php
│ ├── UrlCheckerService.php
│ └── UrlCheckService.php
└── Validator/ # Валидация данных
└── UrlValidator.php- ✅ Клиент-серверная архитектура и HTTP-протокол
- ✅ Роутинг и обработка HTTP-методов (GET, POST)
- ✅ Работа с шаблонизатором Twig
- ✅ Проектирование базы данных (нормальные формы, связи)
- ✅ SQL-запросы через PDO
- ✅ Валидация пользовательских данных
- ✅ Работа с внешними API (HTTP-запросы)
- ✅ Парсинг HTML-контента
- ✅ Flash-сообщения для UX
- ✅ Bootstrap для frontend
- ✅ Деплой на PaaS-платформу
Gennady Maslov
- Email: gennadiy.dev@yandex.ru
- GitHub: @gmaslov-dev
Этот проект создан в образовательных целях в рамках обучения на платформе Hexlet.
⭐️ Если проект был полезен, поставьте звезду на GitHub!