Next.js – standardy projektowe

Zbiór wytycznych dla projektów realizowanych z wykorzystaniem biblioteki next.js

Narzędzia programistyczne

Do realizacji projektów opartych o next.js rekomendujemy wykorzystanie następujących narzędzi programistycznyach:

  • Visual studio code – jako edytor kodu (przydatne rozszerzenia: Beautify )
  • Sourcetree / Github Desktop / Github Console – narzędzie do zarządzania repozytorium
  • Buddy – narzędzie do zarządzania projektem dla środowisk testowych oraz produkcyjnych

Niezbędna jest również instalacja środowiska node.js wraz z menadzerem pakietów npm lub yarn w rekomendowanych wersjach:

  • node.js – 16.20.0
  • npm – 8.19.4
  • yarn – 1.22.19

Struktura katalogowa

project_name
   --- components
      --- header
          header.js
          --- subComponents
              nameSubComponents.js 
      --- footer
          --- footer.js
          --- footer.modules.scss
      --- forms
          --- activationForm
              activationForm.js
              activationForm.modules.scss
          --- winnersForm
              winnersForm.js
              winnersForm.moodule.scss
          --- subComponents
              formResult.js
              formControl.js
      --- global
          --- loader
              loader.js
          --- button
              button.js
   --- data
       --- languages
           language_pl.json
           language_en.json
       --- product
           product.json
   --- pages
   --- public
   --- fonts
   --- styles
   env.js 

Plik konfiguracyjny .env

Wszystkie zmienne projektowo / środowiskowe typu adres do api itp należy definiować w pliku konfiguracyjnym .env

NEXT_PUBLIC_API_URL=https://api.boskiwiatr.pl 

Uwaga – nigdy w zmiennych środowiskowych nie dodajemy dostępów do zewnętrznych platform i nie wykorzystujemy ich w żaden inny sposób w aplikacji. Tego typu dostępy zawsze powinny być przetwarzane po stronie backendu.

Definiowania styli

Bazowe style definiujące takie elementy jak buttony, nagłówki i inne elementy które będą wielokrotnie wykorzystywane w różnych komponentach zalecamy dodawać w katalogu styles.

Podstawowe pliki ze stylami dla każdego projektu to:

  • customize.scss – własne dodatkowe style dla elementów nieobsługiwanych przez komponenty lub customowy wygląd podstawowych elementów typu buttony itp
  • reset.scss – resetujemy domyślne style przeglądarki w celu zapewnia bardziej spójnej i kontrolowanej podstawy dla własnych stylów.
  • variables.scss – zmienne projektowe dla styli

Pozostale style dla lepszej przejrzystości definiujemy per component

      --- header
          header.js
          header.module.scss
          --- subComponents
              nameSubComponents.js 
              nameSubComponents.module.scss

Responsive web design

Projekty graficzne dla wszystkich projektów mobilnych powinny być przygotowywane na 1024 px szerokości.

W zmiennych projektowych dla styli bazujemy na trzech podstawowych breakpointach

$mobile: 1024px;
$desktopMedium: 1366px;
$desktopLarge: 1680px;

Wersję mobilną kodujemy do 1024 px w celu optymalizacji ilości breakpointów oraz całego kodu. Dotychczas to rozwiązanie sprawdziło się na dotychczasowych projektach choć nie jest idealne i czasami wymaga dostylowania na niestandardowych rozdzielczościach.

Aby zachować wiekszą przejrzystość kodu rekomendujemy dodawać breakpointy bezpośrednio wewnątrz klas

.simpleClass{
    color: #fff;
    @media (max-width: $mobile) {
        color: #ccc;
    }
    ...
}