Technikai stack
Az architektúra mögötti főbb technológiák és döntések.
A Lexo felhőszolgáltatásokra épülő Next.js alkalmazás. Az AI-szolgáltató és a weboldal-beolvasó egy-egy beállítással cserélhető, a többi rész módosítása nélkül.
Frontend
| Technológia | Szerepe |
|---|---|
| Next.js 16 (App Router) | Full-stack React keretrendszer: oldalak, szerveroldali renderelés, API-útvonalak |
| React 19 | Felhasználói felület |
| Tailwind CSS 4 | Stílusok |
| Radix UI (shadcn/ui) | Akadálymentes alapkomponensek (párbeszédablakok, menük, kapcsolók) |
| TanStack Query 5 | Adatlekérés és gyorsítótár a dashboardon |
| Sonner | Felugró értesítések |
| GSAP | Animációk a marketingoldalon |
Backend és adatok
| Technológia | Szerepe |
|---|---|
| Supabase (PostgreSQL) | Elsődleges adatbázis Row Level Security-vel |
| Qdrant | Vektoros adatbázis: a tudásbázis darabjainak embeddingjei |
| Redis (ioredis kliens) | Gyorsítótár, sebességkorlátok, napi tokenkeretek, a megerősítésre váró író műveletek és a rendelés-lekérdezés számlálói |
| Clerk | Bejelentkezés és felhasználókezelés |
| Stripe | Előfizetés és számlázás |
| Resend | Tranzakciós e-mailek küldése, és a jegyekre e-mailben érkező válaszok fogadása |
| Nodemailer | Küldés SMTP-n, ha a szervezet saját e-mail szervert állít be |
| Sentry | Hibafigyelés (EU-s régió, személyes adatok nélkül) |
AI réteg
| Technológia | Szerepe |
|---|---|
Anthropic Claude Haiku 5.5 (claude-haiku-5-5) | A chatbot válaszai éles környezetben, eszközhasználattal (egyedi akciók, rendelés-lekérdezés, időpontfoglalás) |
OpenAI text-embedding-3-small | Embeddingek a tudásbázishoz és a kereséshez (az Anthropicnak nincs embedding API-ja) |
OpenAI gpt-4o-mini | Alternatív chatmodell, szintén eszközhasználattal |
| Google Gemini | Alternatív chat- és embeddingszolgáltató (gemini-2.0-flash-lite-001, gemini-embedding-001), eszközhasználat nélkül |
| Ollama | Helyben futó modellek fejlesztéshez, eszközhasználat nélkül |
| LangChain text splitters | A beolvasott szövegek darabolása (más célra nem használjuk) |
| Jina Reader | Weboldalak beolvasása tiszta szövegként, böngésző nélkül |
| Playwright | Alternatív beolvasó: valódi (headless) böngésző a JavaScriptes oldalakhoz |
| pdf-parse | Szöveg kinyerése feltöltött PDF-ekből |
| fast-xml-parser | Az UNAS webshop XML API-jának feldolgozása (rendelés-lekérdezés) |
Az AI-szolgáltatót az AI_PROVIDER környezeti változó választja ki (anthropic, openai, gemini vagy ollama; ha nincs megadva, a kód openai-ra esik vissza), az Anthropic chatmodellt az ANTHROPIC_CHAT_MODEL írhatja felül. A weboldal-beolvasót a SCRAPER_PROVIDER választja ki (jina vagy playwright; ha nincs megadva, playwright).
Az embeddingszolgáltató cseréje más méretű vektorokat ad, ezért utána a tudásbázist újra kell indexelni.
Infrastruktúra
| Komponens | Éles | Fejlesztés |
|---|---|---|
| Next.js alkalmazás | Vercel | npm run dev |
| Adatbázis | Supabase Cloud | Supabase Cloud (külön projekt, helyi Supabase nincs) |
| Vektoros adatbázis | Qdrant Cloud | Qdrant Cloud, vagy Qdrant Dockerben |
| Redis | Redis Cloud | Redis Cloud külön kulcsprefixszel, vagy Redis Dockerben |
| Resend | Mailpit (Dockerben, a levelek nem mennek ki) | |
| Hibafigyelés | Sentry | Sentry (fejlesztési környezetként jelölve) |