О проекте — агрегатор авиабилетов для португальского рынка. Требуется оптимизация производительности ключевых страниц сайта.
⚠️ Важно: По данной задаче уже велась работа. Необходимо проанализировать проект, изучить что уже сделано и что осталось доделать, прежде чем приступать к выполнению.
Техническая информация
- Framework: Next.js 14 (App Router)
- Hosting: Vercel
- Архитектура: Монорепозиторий для всех доменов (80 доменов, в среднем 2 языка на домен)
- Docker & Redis: Нужно развернуть на нашем отдельном сервере (сервер есть, настройка простая)
- CDN: Cloudflare
- Масштаб: Тысячи страниц для SSG генерации
- Геолокация API: Уже интегрирован
- Документация: Есть в проекте
Что нужно сделать
1. Убрать все ошибки
0 runtime/console ошибок и варнингов на страницах:
- Home
- Flights
- Cheap Flights Anywhere
- Destinations (все уровни: континенты, страны, города)
2. Минимизировать первоначальный вес страницы
Все опциональные компоненты (календарь, модалы, мобильное/десктоп-меню и т.п.) должны догружаться только по действию пользователя.
Цель: уменьшить размер первоначального бандла и ускорить загрузку страницы.
3. Оптимизировать файлы городов и стран
Есть 2 больших JSON файла с данными городов и стран (большого размера, требуют оптимизации):
/data/cities/data/countries
Требуется:
- Настроить загрузку этих файлов через Docker и Redis
- Обеспечить быструю доставку данных на страницы
- Не включать эти JSON в общий клиентский бандл
4. Реализовать SSG для страниц Destinations
⚠️ Важно: Нужно предварительно обсудить архитектуру, так как в будущем там же будем хранить все countries и cities для всех доменов на всех языках.
Что нужно реализовать:
Реализовать SSG (Static Site Generation) для страниц Destinations
- Генерировать статические страницы для всех маршрутов
- Настроить SSG для континентов/стран/городов
API запросы в SSG для динамического контента
- Страницы динамические и требуют подгрузки контента
- При SSG: изначально брать город из домена (например, Лиссабон для tickets.pt)
- При посещении страницы пользователем: брать его текущую локацию (функционал определения локации уже реализован)
Критерии приёмки
Целевые метрики производительности (Google PageSpeed Insights):
- Страницы городов и стран: Зелёная зона (обязательно)
- Главная страница: Зелёная зона (цель), допустима жёлтая зона
Текущее состояние: Website Performance Index в красной зоне
Подтверждение, что:
✅ Все ошибки устранены — 0 console ошибок и варнингов на указанных страницах
✅ Опциональные компоненты переведены на догрузку — календари, модалы, меню загружаются только по действию пользователя
✅ JSON городов и стран оптимизированы — данные загружаются через Docker и Redis, не попадают в клиентский и серверный бандл
✅ SSG настроен для Destinations — статические страницы генерируются с учётом локации из домена, с возможностью динамической подгрузки по геолокации пользователя
✅ Performance метрики достигнуты — зелёная зона на страницах городов/стран, минимум жёлтая на главной
Что ожидаем от исполнителя
- Анализ текущего состояния — оценка объёма работ, изучение уже выполненного
- Предложение архитектуры для SSG страниц Destinations (пункт 4)
- Поэтапная реализация с отчётностью по задачам
- Тестирование на всех указанных страницах
- Документация по внесённым изменениям
Условия работы
Оплата: 12 USD в час
Формат работы:
- Отчётность по задачам
- Код-ревью обязательно (проводит CTO)
- Коммуникация в процессе работы
Требования:
- Опыт с Next.js 14 App Router
- Опыт работы с Docker, Redis, Cloudflare CDN
- Знание SSG и оптимизации производительности
- Опыт работы с монорепозиториями
- Понимание метрик Google PageSpeed Insights
- Подписание NDA обязательно
Сроки и следующие шаги
Просим указать:
- Когда готовы приступить
- Оценку времени на выполнение (в часах)
- Опыт работы с подобными задачами
Готовы обсудить детали, предоставить доступ к репозиторию и ответить на вопросы!