Przejdź do treści
Mateusz Cieplak

Next.js · Organizacja pozarządowa

Fundacja Out of the Box

Strona fundacji przebudowana z eksportu szablonu na Next.js 16

Fundacja Out of the Box z Łodzi prowadzi szkolenia z szycia i krawiectwa oraz pomaga osobom zagrożonym wykluczeniem, m.in. kobietom i seniorom, wejść do branży tekstylnej. Przebudowałem jej stronę ze starego statycznego eksportu szablonu na aplikację w Next.js 16 z pełnymi metadanymi SEO, danymi strukturalnymi, nagłówkami bezpieczeństwa i formularzem z walidacją.

Rola
Jedyny programista: wszystkie 57 commitów
Okres
maj - wrzesień 2026
Technologie
  • Next.js 16
  • React 19
  • TypeScript
  • Tailwind CSS 4
  • Framer Motion
  • React Hook Form
  • Zod
  • Docker
Fundacja Out of the Box: strona główna na ekranie komputera
Fundacja Out of the Box na telefonie
wysokość formularza do przycisku
1101 → 475 px
rodziny fontów
4 → 1
typów schema.org w JSON-LD
5

Kontekst

Poprzednia strona była statycznym eksportem szablonu w Next.js 14, z pozostałościami stron szablonu i formularzem obsługiwanym przez skrypt PHP mail().

Fundacja raportuje też projekty finansowane z UE, które potrzebują osobnej strony z wymaganymi logotypami i danymi umowy.

Co zrobiłem

  • Aplikacja Next.js 16 (App Router) z wyjściem standalone w wieloetapowym buildzie Dockera
  • Wspólny generator metadanych, obraz Open Graph dla każdej trasy, sitemap, robots i JSON-LD (NGO, WebSite, ContactPage, Service, BreadcrumbList)
  • Nagłówki bezpieczeństwa (HSTS, nosniff, polityki ramek, referrera i uprawnień) i obrazy w AVIF albo WebP
  • Płynna skala typografii przez clamp() i dostępne menu mobilne z pułapką fokusu i zamykaniem klawiszem Escape
  • Logo, które po najechaniu składa się w pudełko, w samym CSS i z poszanowaniem ograniczonego ruchu
  • Przewijany pasek logotypów partnerów, slider ze swipe i kropkami oraz baner cookies, który ustępuje przy stopce
  • Formularz kontaktowy z React Hook Form i Zod, zgodami i wysyłką przez SMTP

Trudne momenty i jak je rozwiązałem

  1. Problem

    Po przejściu na Next.js 16 przejście na inną stronę zostawiało ją przewiniętą o 188 px zamiast na górze.

    Rozwiązanie

    Dodany atrybut data-scroll-behavior="smooth", dzięki któremu Next.js 16 wyłącza płynne przewijanie na czas nawigacji i każda strona otwiera się od góry.

  2. Problem

    Testy na prawdziwym telefonie nie działały: serwer deweloperski zwracał 403 w sieci lokalnej, a strona była pusta.

    Rozwiązanie

    Dozwolone adresy odczytywane z interfejsów sieciowych komputera i wersja noscript, żeby strona nigdy nie była pusta.

  3. Problem

    Nagłówki osiągały maksymalny rozmiar za wcześnie, przy ok. 1031-1239 px, i były za duże na laptopach.

    Rozwiązanie

    Przeliczone nachylenia clamp() i niższe maksima, np. h1 z 90 do 72 px.

Wyniki

  • Formularz mieści się na jednym ekranie od 1280 × 720: 1101 → 475 px do przycisku wysyłki
  • Sekcja „Kim jesteśmy?” 921 → 635 px wysokości przy 1430 × 746
  • Kroje pisma zredukowane z 4 rodzin do 1

Ekrany

Przesuń palcem albo użyj przycisków, żeby przejrzeć ekrany.

  • Strona główna
    Komputer · Strona główna
  • Strona główna na telefonie
    Telefon · Strona główna na telefonie
  • Szkolenia
    Komputer · Szkolenia
  • Szkolenia na telefonie
    Telefon · Szkolenia na telefonie
  • Projekty UE
    Komputer · Projekty UE

Kontakt

Porozmawiajmy.

Szukasz frontend developera, który doprowadzi projekt aż do produkcji? Skorzystaj z formularza albo napisz bezpośrednio.

kontakt@mateuszcieplak.com

Dane służą wyłącznie do odpowiedzi. Formularz obsługuje Web3Forms.

Skontaktuj się