# PulsingFeed — Website

Strona marketingowa projektu PulsingFeed. Zawiera landing page z opisem produktu, stronę z changelogiem, blog oraz strony prawne (polityka prywatności, regulamin).

## Stack technologiczny

| Technologia | Wersja | Zastosowanie |
|-------------|--------|--------------|
| Next.js | ^16.1.6 | Framework (App Router) |
| React | ^18.2.0 | UI |
| TypeScript | ^5.0.0 | Typowanie |
| next-intl | ^4.8.3 | Internacjonalizacja (i18n) |

## Struktura projektu

```
Website/
├── app/
│   ├── [locale]/              # Routing z prefiksem językowym (/en, /pl, /fr, /es)
│   │   ├── page.tsx           # Strona główna (Hero, WhatIs, Features, FAQ)
│   │   ├── layout.tsx         # Layout z nawigacją i stopką
│   │   ├── blog/              # Strona bloga
│   │   ├── changelog/         # Historia zmian
│   │   ├── privacy/           # Polityka prywatności
│   │   └── terms/             # Regulamin
│   ├── layout.tsx             # Root layout
│   └── globals.css            # Globalne style i zmienne CSS
├── components/
│   ├── layout/                # Navigation, Footer, LanguageSwitcher, ThemeToggle
│   ├── sections/              # Hero, WhatIs, Features, FAQ
│   └── ui/                    # CookieBanner, GTMScript, ImagePlaceholder
├── messages/                  # Pliki tłumaczeń
│   ├── en.json                # Angielski (domyślny)
│   ├── pl.json                # Polski
│   ├── fr.json                # Francuski
│   └── es.json                # Hiszpański
├── i18n.ts                    # Konfiguracja next-intl (serwer)
├── proxy.ts                   # Middleware routingu językowego
└── next.config.ts             # Konfiguracja Next.js z wtyczką next-intl
```

## Internacjonalizacja

Strona obsługuje 4 języki z prefiksem w URL:

| Prefiks | Język |
|---------|-------|
| `/en`   | Angielski (domyślny) |
| `/pl`   | Polski |
| `/fr`   | Francuski |
| `/es`   | Hiszpański |

Middleware (`proxy.ts`) automatycznie wykrywa język przeglądarki i przekierowuje na odpowiedni prefiks. Tłumaczenia przechowywane są w `messages/*.json`.

## Instalacja środowiska developerskiego

### Wymagania

- **Node.js** ≥ 18
- **npm** ≥ 9

### Kroki

```bash
# 1. Przejdź do katalogu Website
cd Website

# 2. Zainstaluj zależności
npm install
```

> Skrypt `copy:favicons` kopiuje favicon z katalogu `../shared/` przed każdym uruchomieniem — upewnij się, że katalog `shared/` istnieje w repozytorium (jest już dołączony).

## Uruchamianie

### Tryb developerski

```bash
npm run dev
```

Aplikacja będzie dostępna pod adresem: **http://localhost:3333**

Serwer developerski automatycznie odświeża stronę przy zmianach w kodzie.

### Budowanie produkcyjne

```bash
npm run build
```

> Build jest uruchamiany z wyłączonym Turbopack (`NEXT_DISABLE_TURBOPACK=1`) ze względu na kompatybilność z next-intl.

### Uruchamianie buildu produkcyjnego

```bash
npm run start
```

Serwer produkcyjny uruchamia się na porcie **3333**.

### Linting

```bash
npm run lint
```

## Dodawanie tłumaczeń

Tłumaczenia znajdują się w plikach `messages/*.json`. Każdy plik ma identyczną strukturę kluczy — aby dodać nową treść:

1. Dodaj klucz do `messages/en.json` (plik referencyjny)
2. Dodaj odpowiednie tłumaczenia do `pl.json`, `fr.json`, `es.json`
3. Użyj klucza w komponencie za pomocą hooka `useTranslations` (client) lub `getTranslations` (server):

```tsx
import { useTranslations } from 'next-intl';

export default function MyComponent() {
  const t = useTranslations('namespace');
  return <p>{t('key')}</p>;
}
```
