liftman/README.md
2026-05-22 23:05:37 +02:00

240 lines
5.2 KiB
Markdown

# 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