# Node.js SSR Deployment on cPanel (Subfolder `/konfigurator`)

## 1. Priprema projekta

1. U root folderu projekta proverite da su sledeće vrednosti u `next.config.ts`:
   ```ts
   basePath: '/konfigurator'
   assetPrefix: '/konfigurator'
   ```
   Ovo omogućava da se aplikacija servisira iz poddirektorijuma dok je i dalje pokreće Node server.

2. Na lokalnoj mašini napravite production build (opciono, za proveru):
   ```bash
   npm install
   npm run build
   ```
   Build artefakti će biti u `.next/` direktorijumu (više se ne koristi `out/`).

## 2. Upload projekta na server

1. Preko FTP/SFTP ili cPanel File Manager-a uploadujte *ceo projekat* (sve fajlove, uključujući `package.json`, `next.config.ts`, `src/`, `public/`, itd.) na željenu lokaciju na serveru, npr. `~/tehnolink-konfigurator/`.
2. Prijavite se SSH-om ili koristite cPanel Terminal.
3. U root folderu projekta pokrenite:
   ```bash
   npm install
   npm run build
   ```

## 3. Kreiranje Node.js aplikacije u cPanel-u

1. Otvorite **Setup Node.js App** u cPanel-u.
2. Kliknite **Create Application** i podesite:
   - **Application Root**: putanja gde je uploadovan projekat (npr. `tehnolink-konfigurator`).
   - **Application URL**: `/konfigurator`.
   - **Application Startup File**: ostavite prazno (koristi se `npm start`).
   - **Node.js version**: odaberite verziju koja postoji na serveru (npr. 18.x ili 20.x).
3. U donjem delu (Environment Variables) dodajte ako je potrebno:
   - `PORT` = `3000` (ili drugi slobodan port).
4. U polje **Application Startup Command** unesite:
   ```bash
   npm start
   ```
5. Kliknite **Create** (ili **Save**) i zatim **Restart** aplikaciju.

cPanel Node App manager koristi Passenger ili interni proxy, pa će svaki zahtev ka `https://tehnolink.net/konfigurator` biti prosleđen na Node proces.

## 4. Statik fajlovi

- Svi fajlovi iz `public/` foldera biće automatski servirani (npr. `/tehnolink-logo.png`, `/motori/...`).
- Nije potrebno ručno uploadovati `products.json`; on ostaje u `public/products.json` i renderuje se kroz Next.

## 5. .htaccess

Za SSR nije potrebno održavati specijalni `.htaccess` u `public_html/konfigurator`. cPanel Node modul preusmerava saobraćaj direktno ka Node aplikaciji. Ako postoji stari `.htaccess`, uklonite ga da se izbegnu konflikti.

Ako je iz bilo kog razloga potreban Apache redirect (npr. forisanje HTTPS-a), fajl može ostati u `public_html` korenu, ali ne u `public_html/konfigurator`.

## 6. Deploy update-a

Kada napravite izmene:
1. SSH u server.
2. Uđite u root projekta, npr. `cd ~/tehnolink-konfigurator`.
3. Povucite poslednje izmene (git pull ili upload), zatim:
   ```bash
   npm install    # ako je package.json promenjen
   npm run build
   ```
4. U cPanel Node App manageru kliknite **Restart** aplikaciju.

## 7. Testiranje

- Posetite `https://tehnolink.net/konfigurator/`.
- Proverite da li se JS bundle-ovi učitavaju iz `/konfigurator/_next/...`.
- Kliknite na proizvod (`Configure`) i uverite se da se stranica otvara (SSR/SSG). 
- Proverite Network tab u DevTools-u da li API poziv koristi `/konfigurator/products.json` (zahvaljujući `basePath`).

## 8. Problemi & Debug

- **502/503 error**: proverite da li Node app radi (`npm run build` bez greške, `npm start`). Pogledajte `~/<app-root>/logs/` direktorijum.
- **404 bundle-ovi**: proverite da basePath ostane `/konfigurator` i da Apache ne uklanja prefix (bez custom rewrite pravila).
- **Node restart nakon deploy-a**: uvek kliknite **Restart** posle build-a, ili koristite `touch tmp/restart.txt` u root-u aplikacije.

Sa ovim koracima aplikacija radi kao SSR Node.js servis u poddirektorijumu na cPanel-u.
