# Vatroservis Centar — stanje projekta

_Poslednje ažurirano: 2026-08-08_

## Šta je ovo

Sajt firme "Vatroservis Centar" + web shop aplikacija (Node.js) sa katalogom, korpom, narudžbama i administracijom. Trenutno se katalog pun proizvoda office materijala (papir, markeri...) koristi kao placeholder podataka — pravi asortiman (vatrogasna oprema ili šta god se odluči) korisnik dodaje/menja kasnije kroz admin panel.

## Tehnologije

- **Backend:** Node.js + Express
- **Baza:** ugrađeni `node:sqlite` (Node 24) — **ne** `better-sqlite3`, jer na mašini nema Visual Studio Build Tools-a za kompajliranje native modula
- **Lozinke:** `bcryptjs` (čist JS, zamena za `bcrypt` iz istog razloga)
- **Sesije:** `express-session` (in-memory store — ok za sada, treba persistent store ako se ikad skalira na više instanci)
- **Upload slika:** `multer`

Pokretanje lokalno: `npm start` (ili `node server.js`) → `http://localhost:3000`

## Struktura projekta

```
server.js                  — glavni Express server + middleware koji zaključava stranice
db/database.js             — šema baze + seed (admin nalog, početni artikli)
middleware/auth.js         — zahtevaPrijavu / zahtevaAdmina
routes/
  auth.js                  — prijava, odjava, /api/me (registracija je UKLONJENA)
  catalog.js                — /api/artikli, /api/kategorije (zahteva prijavu)
  cart.js                  — korpa (zahteva prijavu)
  orders.js                — završetak narudžbe (zahteva prijavu)
  admin.js                 — CRUD artikli, pregled narudžbi, CRUD korisnici (zahteva admin/superadmin)
public/
  index.html               — javna landing stranica firme (JEDINA javna stranica van login-a)
  Logo Vatroservis Centar.jpg, Slike/  — slike (javno dostupne, staticki resurs)
  shop/
    prijava.html            — login (jedina "ulazna" stranica aplikacije)
    katalog.html            — katalog proizvoda (traži prijavu)
    korpa.html               — korpa + završetak narudžbe (traži prijavu)
    admin.html               — CRUD artikala, dodavanje kroz pop-up formu
    narudzbe.html             — pregled svih narudžbi (admin/superadmin)
    korisnici.html            — pregled/kreiranje/izmena/brisanje korisnika (admin/superadmin)
    css/style.css, js/*.js
data/shop.db                — SQLite baza (kreira se automatski pri pokretanju)
```

## Nalozi

- **Superadmin (glavni nalog):** `bosnicp` / `123Bosnic!!!`
- Nema više javne registracije — **naloge kreira isključivo admin/superadmin** kroz stranicu Korisnici
- Nivoi prava: `kupac`, `admin`, `superadmin` (admin i superadmin imaju ista prava OSIM što samo superadmin može da dodeli nivo viši od kupac)

## Šta je gotovo

- Ceo shop je zatvoren — ništa nije javno osim `index.html` i login forme; sve ostalo redirektuje na prijavu ako nema sesije
- Katalog: pregled, filter po kategoriji, pretraga, sortiranje
- Korpa: dodavanje/izmena količine/uklanjanje, završetak narudžbe (generiše 9-cifreni broj narudžbe)
- Admin: dodavanje/izmena/brisanje artikala (uključujući upload slike) kroz pop-up formu
- Narudžbe: admin/superadmin vide sve narudžbe svih kupaca, sa detaljima po stavkama
- Korisnici: admin/superadmin vide, kreiraju, menjaju i brišu korisnike; samo superadmin menja nivo prava
- Header: logo + meni u istom redu levo, pozdrav/odjava desno u istoj liniji, poravnato sa širinom sadržaja ispod

## Gde smo stali — hosting

Domen i hosting su zakupljeni kod **BitLab** (`hosting.bitlab.rs`), paket **Hosting L** (shared hosting, 5GB sajt+baza). Njihov sajt ne pominje nigde Node.js podršku (fokus im je WordPress/Joomla/PHP), pa je vrlo verovatno da ovaj paket **ne može da pokrene našu Node.js aplikaciju kako je napravljena**.

Sledeći koraci (nedovršeno):
1. **Mejl poslat BitLab podršci (2026-08-08)** — pitanje da li Hosting L podržava Node.js app, npm pakete, SQLite/MySQL, SSH pristup, koji je kontrolni panel. **Čeka se odgovor.**
2. Ako BitLab ne podržava Node.js, opcije za dalje:
   - Nadogradnja na BitLab VPS (od ~94 KM/mesečno) — puna kontrola, aplikacija radi bez izmena
   - Hostovati aplikaciju na jeftinijem/besplatnom Node.js hostingu (VPS drugde, ili PaaS), a domen samo preusmeriti (DNS) ka njemu
   - Prepisati backend u PHP/MySQL da odgovara shared hostingu (najveći posao, izbegavati ako ima drugih opcija)
3. **Razmatra se i privremena opcija**: pokretanje aplikacije sa ličnog računara i izlaganje na internet preko tunela (npr. Cloudflare Tunnel ili ngrok) — dobro za test/demo, ali nije preporučljivo kao trajno rešenje (računar mora non-stop da radi, bezbednosni rizik za kućnu mrežu). **Ovo je verovatno pravac za sledeći put.**

(Napomena: postoji i stariji mejl pripremljen za drugog provajdera — `promindtech.ba` — ali taj pravac trenutno nije aktuelan.)

## Otvorena pitanja / pretpostavke za proveru

- `index.html` je ostavljen javan (van login zida) jer je to informativna stranica firme, ne deo same aplikacije — potvrditi da je to i dalje željeno
- Cene i asortiman u katalogu su izmišljeni placeholderi iz slika u `Slike/` folderu — korisnik će ih urediti naknadno
