Бэкенд и фронтенд
Задача: написать небольшой по функционалу сайт с очень-очень высокой производительностью. Всего лишь 1 запрос к БД и генерация Web-страницы. Так как требуется обрабатывать большое количество одновременных запросов, поэтому предлагается использовать чистый PHP, без фреймворков.
Самое важное требование: очень быстрая скорость генерации страниц и отрисовки в браузере.
Контент и функционал сайта:
Структура сайта здесь – https://miro.com/app/board/uXjVOEb5thE=/
Пегинация (“листалка” страниц)
Поиск по сайту (только по одному полю из базы, на котором будет стоять индекс, поэтому должно быстро и легко работать)
Страница ошибки 404
Страница ошибки 500 (например, если отвалилась база данных)
Генерация Sitemap (или генерировать статичные файлы или генерировать “на лету”, решим как лучше)
Правильно размеченный HTML-код для SEO (meta теги и прочее)
Выложить файлы – robots.txt, favicon.ico
Выложить статичные HTML страницы -- лицензионное соглашение, инструкция как удалить приложение
Разместить PopUp с информацией про сбор Cookie (чтобы соответствовать требованиям GDPR)
Скачивание EXE и ZIP-файлов (проксировать через наш сервер, чтобы скрыть настоящий URL)
Подготовка:
Настроить 2 окружения на GitLab: Production и Development. Должен делаться авто-деплой в нужное окружение, в зависимости от того, в какую ветку GitLab был сделан коммит.
Это должно работать из коробки на DigitalOcean App Platform, но я должен был об этом написать сразу.
Требования к бэкенд:
Чистый PHP, без использования фреймворков (никакого Laravel, но легковесные библиотеки использовать можно, чтобы не пилить свои велосипеды)
Возможно, выбрать шаблонизатор (нужно, чтобы можно было легко переключаться на другие дизайны с абсолютно другой вёрсткой)
Хостинг бэкенда в DigitalOcean (локация: США)
PostgreSQL в качестве базы, будет размещена на DigitalOcean
GitLab для хранения кода и релизов
Роутинг страниц (в простом варианте можно передавать параметры через GET, но намного лучше будет реализовать ЧПУ)
Требования к фронтенд:
Использовать легковесный UI фреймворк (Bootstrap или UIKit), подключать без компиляции
Добиться максимально быстрой отрисовки страниц в браузере
Поддержка всех возможных размеров экранов (в том числе мобильных)
Решить, что делать с вёрсткой (заказать у кого-то, найти на Template Monster или собрать из UI фреймворка)
Базовая оптимизация базы данных:
Правильно расставить индексы
Провести простенькое нагрузочное тестирование
Провести профайлинг долгих запросов
Перед релизом в продакшен:
Убедиться, что домен куплен и настроен
Подключить домен на работу через Cloudflare
Установка счётчиков:
Google Analytics
Google Tag Manager
Google Optimize
Google Seo Console
Bing Seo Console
Yahoo Seo Console
Процесс приёмки, что будет считаться выполненным “проектом”:
Скорость загрузки и отрисовки соответствует требованиям
Сайт выложен в продакшен (доступен на домене)
Сайт успешно подключен к Google Seo Console

