Strona internetowa · v2project

v2project: biuro inżynierskie PV, BESS i elektroenergetyki

Biuro inżynierskie niewidoczne dla wyszukiwarek: pusty root div, brak robots, brak sitemapy, brak danych strukturalnych i formularz kontaktowy, który istniał wyłącznie jako martwe stringi w bundlu. Zbudowaliśmy stronę od nowa w języku samego inżyniera.

Klient
v2project
Rok
2026
Stack
  • Next.js 16
  • Tailwind CSS 4
  • Wireframe'y Three.js
  • GSAP + Lenis
  • react-hook-form + Zod
  • Playwright + axe
Strona główna v2project.pl: ciemna siatka kreślarska, inżynierski nagłówek, jeden akcent na cyfrze 2
www.v2project.pl
  1. Audyt starej strony

    Zanim cokolwiek zaproponowaliśmy, 10 lipca 2026 przeanalizowaliśmy stronę produkcyjną. Była to aplikacja SPA w React i Vite, renderowana wyłącznie po stronie klienta: serwer wysyłał 1667 bajtów HTML z pustym `<div id="root">`, a całą resztę robił bundle JavaScriptu o wadze około 220 KB.

    Braki SEO były poważne. robots.txt zwracał 404, sitemap.xml zwracał 404, nie było ani jednego bloku danych strukturalnych, nie było kanonicznego adresu, nie było og:image mimo zadeklarowanego `summary_large_image` w twitter:card, nie było favicony. Zarówno apex, jak i www zwracały 200 bez przekierowania, więc treść się dublowała.

    Formularz kontaktowy w ogóle nie istniał w DOM. W bundlu zostały jeszcze jego martwe stringi, na przykład „Imię i nazwisko” i „Wyślij zapytanie”, ale jedynymi działającymi kanałami kontaktu były `mailto:` i link telefoniczny.

    Za to teksty były dobre: rzeczowe, techniczne i bez marketingowej waty. Hero, proces i filary przenieśliśmy niemal słowo w słowo.

  2. Język inżyniera

    Idea marki mieści się w jednym zdaniu: „Precyzja, która daje energię”. v2project projektuje instalacje fotowoltaiczne, magazyny energii (BESS) i infrastrukturę elektroenergetyczną, a marka mówi tak jak jej inżynierowie: spokojnie i konkretnie.

    Z tego wynika warstwa wizualna: „ciemne tło jak ekran CAD po zmroku, siatka kreślarska, etykiety mono, jeden mocny akcent barwny”. Nie dodaliśmy żadnej ozdoby, której nie miałby rysunek techniczny.

    Strona prowadzi przez sześciostopniowy proces, który biuro naprawdę stosuje: od weryfikacji warunków przyłączeniowych, profilu obciążenia i ograniczeń terenowych, zanim powstanie pierwszy rysunek, przez koncepcję, projekt budowlany i techniczny, po uzgodnienia z operatorem sieci i nadzór autorski przy odbiorze.

    Strona główna v2project.pl: siatka kreślarska, etykiety mono i inżynierski nagłówek
    v2project.pl: strona główna, siatka kreślarska i etykiety mono na ciemnym tle
  3. Jeden akcent

    Znak jest wyłącznie typograficzny: geometryczny sans, małe litery, bez sygnetu-symbolu. Nazwa jest w kolorze neutralnym, a kolor dostaje tylko cyfra „2”. Ten jeden akcent to cała identyfikacja.

    Zasady są krótkie i obowiązują wszędzie. Nazwa zawsze małymi literami: „v2project”. Kolor tylko na „2” i nigdzie indziej, jeden akcent na kompozycję. Siatka i etykiety mono służą jako motyw tła.

    Znak istnieje wyłącznie jako plik wektorowy. Nikt go nie przerysowuje ani nie składa z fontu systemowego. Księga znaku dopuszcza trzy warianty pliku (na ciemnym tle, na jasnym i mono) i wyklucza wszystkie inne kombinacje.

    Okładka księgi znaku: logotyp v2project małymi literami z jednym akcentem na cyfrze 2
    Znak v2project: logotyp małymi literami z akcentem na cyfrze 2, na ciemnym i jasnym tle
  4. Budowa

    Next.js 16 z Reactem 19 i Tailwindem 4, generowany statycznie, więc podstrony niewidoczne wcześniej dla crawlerów przychodzą teraz jako HTML. Ruch jest rozdzielony: GSAP i Lenis odpowiadają za zachowanie przewijania, Framer Motion za przejścia komponentów.

    Na podstronach usług stoją proceduralne modele wireframe zbudowane w Three.js: farma PV, stacja BESS i instalacja rozdzielnicowa. Powstają w kodzie, więc strona nie ściąga ciężkich plików 3D, a statyczny plakat przenika w scenę, gdy ta jest gotowa.

    Tym razem formularz kontaktowy naprawdę istnieje: react-hook-form ze schematem Zod. Dostępność sprawdzają w buildzie Playwright i axe, które przechodzą po podstronach.

    Podstrona magazynów energii z proceduralnym wireframe'em stacji BESS
    v2project.pl: podstrona usługi z proceduralnym modelem wireframe w Three.js
  5. Premiera

    Serwis działa pod adresem www.v2project.pl. Każda luka w fundamencie technicznym, którą znalazł audyt, jest zamknięta: robots.txt i sitemap.xml odpowiadają, podstrony niosą dane strukturalne, kanoniczny adres i og:image, a strona odpowiada pod jednym hostem zamiast dwóch.

    Stara strona była jedynym źródłem prawdziwych danych firmowych: nazwy działalności, NIP-u, obu adresów, telefonów do działów i pełnej listy instalacji niskoprądowych, od SSP przez CCTV i kontrolę dostępu po automatykę budynkową. Przenieśliśmy to wszystko do warstwy treści, żeby żadne z tych pól nie zostało jako `null`.

    Strona kontaktu v2project.pl: „Zacznijmy od dobrego projektu” z danymi biura
    v2project.pl: strona kontaktu z adresem biura i działającym formularzem zapytania

Co powstało poza stroną

  • Serwis

    Statycznie generowany build Next.js 16: podstrony usług, sześciostopniowy proces, proceduralne modele 3D i działający formularz kontaktowy.

  • Znak typograficzny i księga znaku

    Logotyp małymi literami z jednym akcentem na cyfrze „2” oraz pełna księga znaku w PDF: konstrukcja, pole ochronne, wersje kolorystyczne, typografia i zasady użycia.

  • Pakiet plików brand

    Wektorowe SVG logo i sygnetu: na ciemnym tle, na jasnym, mono i jako kafel. To jedyne dopuszczalne źródło znaku.

  • Audyt SEO i wdrożenie techniczne

    Audyt starej strony z lipca 2026 i poprawki, które wskazał: robots, sitemap, dane strukturalne, canonical, og:image i treść renderowana po stronie serwera.

Efekt

  • Serwis działa pod adresem www.v2project.pl, renderowany po stronie serwera zamiast wyłącznie w przeglądarce.
  • robots.txt i sitemap.xml odpowiadają, choć wcześniej oba zwracały 404.
  • Strona główna ma dane strukturalne, link kanoniczny i og:image, a audyt nie znalazł żadnego z nich.
  • Formularz kontaktowy istnieje w DOM, a stara strona miała tylko link mailto.