Cél: RepairDesk + Shopify helyett egy integrált rendszer: lcdfix.hu weboldal + szerviz backend + készlet + beszállítók + időpontfoglalás.
Fejlesztés: lokálisan a gépeden → éles: felhős VPS (Docker).
npm run dev)┌─────────────────────────────────────────────────────────┐
│ lcdfix.hu (Astro – publikus) │
│ – Bemutatkozás, árlisták, időpontfoglalás űrlap │
└────────────────────────┬────────────────────────────────┘
│ REST API (fetch)
┌────────────────────────▼────────────────────────────────┐
│ admin/ (React – belső szerviz app) │
│ – Munkalap, készlet, PO, beszállítók, időpontok │
└────────────────────────┬────────────────────────────────┘
│
┌────────────────────────▼────────────────────────────────┐
│ server/ (Hono API + SQLite) │
│ – Auth JWT, üzlet logika, rendelés-javaslat, OCR │
└────────────────────────┬────────────────────────────────┘
│
┌────────────────────────▼────────────────────────────────┐
│ server/data/lcdfix.db (lokális → később volume/cloud) │
└─────────────────────────────────────────────────────────┘
Stack: Node 22, Hono, better-sqlite3, React 19, Vite, Astro 6 (web).
server/)| Fájl | Funkció |
|——|———|
| src/db/schema.ts | Alap SQLite séma |
| src/db/schema-v2.sql | Tervezett bővítés (szolgáltatások, időpont, PO) |
| src/routes/workOrders.ts | Munkalap CRUD, státusz, alkatrész levonás |
| src/routes/parts.ts | Készlet, bevételezés, árak |
| src/routes/customers.ts | Ügyfelek |
| src/routes/print.ts | 80 mm thermal HTML |
| src/routes/auth.ts | Login JWT |
| src/seed.ts | 3 üzlet, demo alkatrészek, admin |
admin/)| Oldal | Funkció |
|——-|———|
| / | Munkalap lista |
| /munkalap/uj | Új munkalap |
| /munkalap/:id | Részletek, státusz, nyomtatás |
| /keszlet | Alkatrészek |
| /bevetelezes | Bevételezés |
src/ – lcdfix.hu váz)| Fájl | Állapot |
|——|———|
| data/site.json | Üzlet adatok, USP-k |
| data/prices-iphone.json | iPhone árak (statikus – át kell kötni API-ra) |
| layouts/BaseLayout.astro | Layout váz |
| pages/index.astro | Nincs kész (default Astro placeholder) |
deploy/, Docker)| Fájl | Funkció |
|——|———|
| Dockerfile | Production image |
| docker-compose.yml | app + nginx + certbot |
| deploy/nginx-init.conf | HTTP indulás |
| deploy/nginx-ssl.conf | HTTPS éles |
| .env.example | Környezeti változók |
stores – 3 üzlet (AL, DP, U3)users – admin, szerelőcustomers, devicesparts, part_stockwork_orders, work_order_parts, work_order_status_logstock_receipts, stock_receipt_items, stock_movementsticket_countersFájl: server/src/db/schema-v2.sql
service_categories – Kijelző, Akku, stb.services – pl. „iPhone 14 kijelző csere (gyári)”service_parts – szolgáltatás → szükséges alkatrész(ek)service_pricing_rules – minőség, felár, akcióstore_opening_hours – foglalási ablakappointments – ügyfél foglalássuppliers – nagyker (web, határidő 18:00)supplier_products – SKU mapping, ár, készletpurchase_orders, purchase_order_itemsreorder_rules – min/max készlet, fogyásdocument_imports – PDF számla/szállítólevélBE: foglalás kérés (service_id, store_id, preferált dátum)
1. Szükséges alkatrészek = service_parts(service_id)
2. Készlet = part_stock(store_id) minden szükséges partra
3. HA mind ≥ 1:
→ earliest_slot = ma/ holnap (nyitvatartás, kapacitás)
→ appointment.status = 'confirmed'
→ parts_reserved = true (opcionális soft reserve)
4. HA hiányzik:
→ order_deadline = ma 18:00 vagy holnap 18:00 (TZ: Europe/Budapest)
→ delivery_date = order_deadline előtt rendelés → +1 munkanap
→ earliest_slot = delivery_date + 1
→ appointment.status = 'pending_parts'
→ PO javaslat generálás supplier_products alapján
5. Visszaad: { slot, price, needsOrder, expectedPartsDate }
Napi job (pl. 17:30):
reorder_rules: ahol quantity < min_stock → PO tétel (reason: consumption)appointments ahol status = pending_parts és nincs PO → PO tétel (reason: appointment)supplier_id szerint< order_deadline → PO status = ready_to_sendFázis 1: CSV import (beszállító formátum)
Fázis 2: PDF → szöveg (pdf-parse) → sor matching SKU/ean
Fázis 3: Egyeztetés PO-val → stock_receipts automatikus
POST /api/auth/login
GET /api/auth/me
GET /api/stores
GET /api/customers
GET /api/work-orders
POST /api/work-orders
PATCH /api/work-orders/:id/status
GET /api/parts
POST /api/parts/receive
GET /api/print/work-order/:id
GET /api/public/services # lcdfix.hu árlista
GET /api/public/availability # szabad időpontok
POST /api/public/appointments # foglalás
GET /api/services # admin
POST /api/services
GET /api/suppliers
POST /api/suppliers/:id/sync # ár/készlet pull
GET /api/purchase-orders
POST /api/purchase-orders/generate # auto javaslat
POST /api/purchase-orders/:id/send
POST /api/imports/document # PDF/CSV feltöltés
POST /api/imports/:id/confirm # érkeztetés
git clone https://github.com/Hristos0527/lcdfixallee.git lcdfix-platform
cd lcdfix-platform
npm install
npm run seed # első alkalommal
npm run dev
| URL | Mi |
|---|---|
| http://localhost:5173 | Szerviz admin |
| http://localhost:3001/api/health | API |
Belépés: admin@lcdfix.hu / admin123 (változtasd!)
Adatbázis: server/data/lcdfix.db – másolható másik gépre.
cp .env.example .env # JWT_SECRET, DOMAIN
cp deploy/nginx-init.conf deploy/nginx.conf
docker compose up -d --build
./deploy/ssl-init.sh # SSL után
schema-v2.sql migráció futtatása + seed szolgáltatások (iPhone kijelzők)services + appointments API + admin oldalsuppliers CRUD + manuális ár import| Kód | Név | Cím |
|---|---|---|
| AL | LCD FIX – Allee | 1117 Budapest, Október huszonharmadika u. 8-10. |
| DP | LCD FIX – Duna Plaza | 1138 Budapest, Váci út 178. |
| U3 | LCD FIX – Üzlet 3 | módosítandó |
SZERVIZ.md – rövid szerviz útmutatóLOKAL-ATVITEL.md – másik projektbe másolásserver/src/db/schema-v2.sql – SQL migráció.env.example – production envUtolsó frissítés: 2026-03-09