# LiftEllenőr Magyar nyelvű liftellenőrzési és naplózási rendszer technikusok számára. Az alkalmazás főbb részei: - nyilvános landing oldal: `/` - bejelentkezés: `/bejelentkezes` - regisztráció: `/regisztracio` - technikusi kezelőfelület: `/alkalmazas` - kereshető naplóoldal: `/naplo` ## Funkciók - JWT alapú hitelesítés - PostgreSQL adatbázis - külön kezelt eszközök és naplóbejegyzések - modalos új eszköz / új napló folyamat - PDF csatolmányok feltöltése egy naplóhoz - közelgő ellenőrzési határidők műszerfala - Adminer webes adatbázis-kezelő a stack részeként - nagy mennyiségű tesztadat generálása seed scripttel ## Stack A `compose.yaml` alapján a rendszer ezekből a szolgáltatásokból áll: - `frontend` Nginx konténer, a statikus frontend kiszolgálására és az API proxyzására. - `backend` Node.js + Express alkalmazás, API-val és hitelesítéssel. - `postgres` PostgreSQL adatbázis a felhasználók, eszközök, naplók és fájlmetaadatok tárolására. - `adminer` Webes adatbázis-kezelő a PostgreSQL gyors böngészéséhez és ellenőrzéséhez. ## Portok - alkalmazás: `http://localhost:8080` - PostgreSQL: `localhost:5432` - Adminer: `http://localhost:8090` ## Előfeltételek - Node.js 22 körüli verzió - npm - Podman Compose vagy Docker Compose ## Gyors indítás 1. Függőségek telepítése: ```bash npm install ``` 2. A teljes stack indítása: ```bash podman compose up -d ``` Ha Docker Compose-t használsz: ```bash docker compose up -d ``` 3. Nyisd meg az alkalmazást: ```text http://localhost:8080 ``` ## Stack kezelése Indítás: ```bash podman compose up -d ``` Leállítás: ```bash podman compose down ``` Leállítás kötetekkel együtt: ```bash podman compose down -v ``` Logok megtekintése: ```bash podman compose logs -f ``` Csak a backend logjai: ```bash podman compose logs -f backend ``` ## Adminer használata Az Adminer a `http://localhost:8090` címen érhető el. Bejelentkezési adatok: - rendszer: `PostgreSQL` - szerver: `postgres` Ha a böngészőből közvetlenül a hoston futó PostgreSQL-re csatlakozol, használhatod a `127.0.0.1` címet is, de a compose stacken belül a szolgáltatás neve `postgres`. - felhasználó: `lift_admin` - jelszó: `lift_secret` - adatbázis: `lift_manager` Adminerben hasznos műveletek: - `users` tábla ellenőrzése - `elevators` tábla böngészése - `logs` és `log_files` kapcsolatok megtekintése - seed után gyors ellenőrzés, hogy a tömeges tesztadat bekerült-e ## Seed adatok A projekt tartalmaz egy seed scriptet sok tesztadat előállításához: ```bash npm run seed ``` Ez több útvonalat, technikust, eszközt és sok kapcsolódó naplóbejegyzést hoz létre. Alap teszt jelszó: ```text teszt123 ``` Teljes újratöltéshez, a meglévő adatok törlésével: ```bash npm run seed:reset ``` Egyedi mennyiségekkel: ```bash node scripts/seed.js --reset --routes 8 --users-per-route 4 --elevators-per-route 20 --logs-per-elevator 16 ``` Elérhető paraméterek: - `--reset` Törli a meglévő adatokat seed előtt. - `--routes` Hány technikusi útvonal készüljön. - `--users-per-route` Hány felhasználó készüljön útvonalanként. - `--elevators-per-route` Hány eszköz készüljön útvonalanként. - `--logs-per-elevator` Hány napló készüljön eszközönként. ## Fejlesztői használat Ha nem konténerből akarod indítani a backendet: 1. gondoskodj róla, hogy a PostgreSQL fusson 2. telepítsd a függőségeket 3. indítsd a szervert ```bash npm install npm start ``` Alapértelmezett backend port: ```text http://localhost:3000 ``` Ebben az esetben a frontend proxyzása nélkül a teljes alkalmazás használatához továbbra is a compose-os Nginx a legegyszerűbb út. ## Környezeti változók Az alapértelmezett értékek az `.env.example` fájlban vannak összegyűjtve. Fontos változók: - `PORT` - `JWT_SECRET` - `DATABASE_URL` - `SEED_PASSWORD` Opcionális. Ezzel felülírható a seedelt felhasználók alap jelszava. ## Adatmodell röviden - `users` Technikusi felhasználók és útvonalak. - `elevators` Az eszközök aktuális állapota és következő ellenőrzési adatai. - `logs` Történeti naplóbejegyzések, eszközhöz kapcsolva. - `log_files` A naplóbejegyzésekhez tartozó PDF fájlmetaadatok. ## Tipikus használati folyamat 1. Indítsd el a stack-et. 2. Ha kell, seedeld az adatbázist `npm run seed:reset` paranccsal. 3. Nyisd meg az alkalmazást a `http://localhost:8080` címen. 4. Jelentkezz be vagy regisztrálj. 5. Az `/alkalmazas` oldalon kezeld az eszközöket és hozz létre új naplóbejegyzéseket. 6. A `/naplo` oldalon keresd és szűrd a bejegyzéseket. 7. Adminerben ellenőrizd az adatokat, ha fejlesztés vagy hibakeresés közben szükséges. ## Fontos fájlok - `server.js` Express route-ok, auth, adatbázis-műveletek - `compose.yaml` frontend + backend + postgres + adminer stack - `nginx/default.conf` frontend route-ok és API proxy - `public/index.html` landing oldal - `public/app.html` kezelőfelület - `public/logs.html` külön naplóoldal - `public/style.css` központi stíluslap - `scripts/seed.js` tesztadat-generáló script