O projekcie — agregator biletów lotniczych dla rynku portugalskiego. Wymagana optymalizacja wydajności kluczowych stron serwisu.
⚠️ Ważne: W tej sprawie już prowadzono prace. Należy przeanalizować projekt, zbadać co już zrobiono i co pozostało do zrobienia, zanim przystąpimy do realizacji.
Informacje techniczne
- Framework: Next.js 14 (App Router)
- Hosting: Vercel
- Architektura: Monorepo dla wszystkich domen (80 domen, średnio 2 języki na domenę)
- Docker & Redis: Należy wdrożyć na naszym oddzielnym serwerze (serwer jest, konfiguracja prosta)
- CDN: Cloudflare
- Skala: Tysiące stron do generacji SSG
- Geolokalizacja API: Już zintegrowana
- Dokumentacja: Jest w projekcie
Co należy zrobić
1. Usunąć wszystkie błędy
0 błędów runtime/console i ostrzeżeń na stronach:
- Home
- Flights
- Cheap Flights Anywhere
- Destinations (wszystkie poziomy: kontynenty, kraje, miasta)
2. Zminimalizować początkową wagę strony
Wszystkie opcjonalne komponenty (kalendarz, modale, menu mobilne/desktopy itp.) powinny być ładowane tylko na działanie użytkownika.
Celem jest zmniejszenie rozmiaru początkowego pakietu i przyspieszenie ładowania strony.
3. Optymalizować pliki miast i krajów
Istnieją 2 duże pliki JSON z danymi miast i krajów (dużego rozmiaru, wymagają optymalizacji):
/data/cities/data/countries
Wymagane:
- Skonfigurować ładowanie tych plików przez Docker i Redis
- Zapewnić szybkie dostarczanie danych na strony
- Nie włączać tych JSON do ogólnego pakietu klienckiego
4. Zrealizować SSG dla stron Destinations
⚠️ Ważne: Należy wcześniej omówić architekturę, ponieważ w przyszłości będziemy tam przechowywać wszystkie kraje i miasta dla wszystkich domen we wszystkich językach.
Co należy zrealizować:
Wdrożyć SSG (Static Site Generation) dla stron Destinations
- Generować statyczne strony dla wszystkich tras
- Skonfigurować SSG dla kontynentów/krajów/miast
API zapytania w SSG dla dynamicznej treści
- Strony są dynamiczne i wymagają ładowania treści
- Przy SSG: początkowo brać miasto z domeny (na przykład, Lizbona dla tickets.pt)
- Przy odwiedzinach strony przez użytkownika: brać jego aktualną lokalizację (funkcjonalność określania lokalizacji już zrealizowana)
Kryteria akceptacji
Docelowe metryki wydajności (Google PageSpeed Insights):
- Strony miast i krajów: Zielona strefa (obowiązkowo)
- Strona główna: Zielona strefa (cel), dopuszczalna żółta strefa
Aktualny stan: Indeks wydajności strony w czerwonej strefie
Potwierdzenie, że:
✅ Wszystkie błędy usunięte — 0 błędów console i ostrzeżeń na wskazanych stronach
✅ Opcjonalne komponenty przekształcone w ładowanie — kalendarze, modale, menu ładują się tylko na działanie użytkownika
✅ JSON miast i krajów zoptymalizowane — dane ładowane przez Docker i Redis, nie trafiają do pakietu klienckiego i serwerowego
✅ SSG skonfigurowany dla Destinations — statyczne strony generowane z uwzględnieniem lokalizacji z domeny, z możliwością dynamicznego ładowania według geolokalizacji użytkownika
✅ Metryki wydajności osiągnięte — zielona strefa na stronach miast/krajów, minimum żółta na stronie głównej
Co oczekujemy od wykonawcy
- Analiza aktualnego stanu — ocena zakresu prac, badanie już wykonanych
- Propozycja architektury dla stron SSG Destinations (punkt 4)
- Etapowa realizacja z raportowaniem zadań
- Testowanie na wszystkich wskazanych stronach
- Dokumentacja dotycząca wprowadzonych zmian
Warunki pracy
Wynagrodzenie: 12 USD za godzinę
Format pracy:
- Raportowanie zadań
- Code review obowiązkowe (prowadzi CTO)
- Komunikacja w trakcie pracy
Wymagania:
- Doświadczenie z Next.js 14 App Router
- Doświadczenie w pracy z Docker, Redis, Cloudflare CDN
- Znajomość SSG i optymalizacji wydajności
- Doświadczenie w pracy z monorepo
- Zrozumienie metryk Google PageSpeed Insights
- Podpisanie NDA obowiązkowe
Terminy i następne kroki
Prosimy o podanie:
- Kiedy są gotowi do rozpoczęcia
- Ocena czasu realizacji (w godzinach)
- Doświadczenie w pracy z podobnymi zadaniami
Jesteśmy gotowi omówić szczegóły, udostępnić dostęp do repozytorium i odpowiedzieć na pytania!