Website · v2project

v2project: engineering office for PV, BESS and power systems

An engineering office invisible to search engines: an empty root div, no robots, no sitemap, no structured data, and a contact form that existed only as dead strings in the bundle. We rebuilt it in the engineer's own language.

Client
v2project
Year
2026
Stack
  • Next.js 16
  • Tailwind CSS 4
  • Three.js wireframes
  • GSAP + Lenis
  • react-hook-form + Zod
  • Playwright + axe
v2project.pl home page: dark drafting grid, engineering headline, one accent on the digit 2
www.v2project.pl
  1. Auditing the old site

    We audited the production site on 10 July 2026 before proposing anything. It was a React and Vite single-page app rendered entirely on the client: the server sent 1667 bytes of HTML containing an empty root div, and a 220 KB JavaScript bundle did the rest.

    The SEO gaps were serious. robots.txt returned 404, sitemap.xml returned 404, there was not a single block of structured data, no canonical, no og:image despite twitter:card declaring a large summary image, and no favicon. Both the apex and the www host returned 200 with no redirect, so the content was duplicated.

    The contact form did not exist in the DOM at all. The bundle still carried its dead strings, such as "Imię i nazwisko" and "Wyślij zapytanie", but the only working contact channels were a mailto and a phone link.

    The writing, on the other hand, was good: technical and free of marketing filler. We carried the hero, the process and the pillars over almost verbatim.

  2. The engineer's language

    The brand idea fits in one line: precision that gives energy. v2project designs photovoltaic installations, battery storage and power infrastructure, and the brand talks the way its engineers do, calmly and concretely.

    The visuals follow from that: a dark background like a CAD screen after hours, a drafting grid, mono labels and one strong colour accent. We added nothing decorative that an engineering drawing would not have.

    The site carries the six-step process the office actually follows, from verifying grid connection conditions and load profile before the first drawing exists, through concept, building design and technical design, to network-operator approvals and design supervision at handover.

    v2project.pl home page: drafting grid, mono labels and the engineering headline
    v2project.pl: the home page, drafting grid and mono labels on a dark ground
  3. One accent

    The mark is purely typographic: a geometric sans, lowercase, no symbol. The name is set in a neutral tone and only the digit "2" gets colour. That single accent is the whole identity.

    The rules are short and apply everywhere. The name is always lowercase, "v2project". Colour goes on the "2" and nowhere else, and each composition gets one accent. The grid and mono labels serve as the background motif.

    The mark exists only as a vector file. Nobody redraws it or types it in a system font. The brand book ships three variants (on dark, on light and mono) and rules out any other combination.

    Brand book cover: the lowercase v2project wordmark with one accent on the digit 2
    The v2project mark: lowercase wordmark with the accent on the digit 2, on dark and on light
  4. Build

    Next.js 16 with React 19 and Tailwind 4, statically generated, so the pages that were invisible to crawlers now arrive as HTML. Motion is split: GSAP and Lenis for the scroll behaviour, Framer Motion for component transitions.

    The service pages carry procedural wireframe models built with Three.js: a solar farm, a BESS station and a switchgear installation. They are generated in code, so the page ships no heavy 3D assets, and a poster image crossfades out once the scene is ready.

    This time the contact form is real, built with react-hook-form and a Zod schema. Playwright and axe run against the pages in the build, so accessibility gets tested.

    Energy storage service page with a procedural wireframe of a BESS station
    v2project.pl: a service page with the procedural Three.js wireframe model
  5. Launch

    The site is live at www.v2project.pl. Every gap the audit found in the technical foundation is closed: robots.txt and sitemap.xml resolve, the pages carry structured data, a canonical and an og:image, and the site answers on one host instead of two.

    The old site was the only source of the company's real data: the registered name, tax number, both addresses, the per-department phone numbers, and the full list of low-current systems, covering fire alarms, CCTV, access control and building management. We moved all of it into the content layer so none of those fields stayed null.

    v2project.pl contact page: 'Zacznijmy od dobrego projektu' with the office details
    v2project.pl: the contact page with the office address and the working enquiry form

What shipped beyond the site

  • The site

    Statically generated Next.js 16 build: service pages, the six-step process, procedural 3D models, and a working contact form.

  • Typographic mark and brand book

    The lowercase wordmark with a single accent on the digit 2, plus a full PDF brand book: construction, clearspace, colour versions, typography and usage rules.

  • Brand file pack

    Vector SVGs of the logo and signet on dark, on light, mono and as a tile. They are the only approved source of the mark.

  • Technical SEO audit and rebuild

    The July 2026 audit of the old site, and the fixes it named: robots, sitemap, structured data, canonical, og:image, and server-rendered content.

Outcome

  • Live at www.v2project.pl, server-rendered rather than client-only.
  • robots.txt and sitemap.xml resolve, where both returned 404 before.
  • Structured data, a canonical link and an og:image are present on the home page, where the audit found none.
  • A contact form exists in the DOM, where the old site had only a mailto link.