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ógiaSzerepe
Next.js 16 (App Router)Full-stack React keretrendszer: oldalak, szerveroldali renderelés, API-útvonalak
React 19Felhasználói felület
Tailwind CSS 4Stílusok
Radix UI (shadcn/ui)Akadálymentes alapkomponensek (párbeszédablakok, menük, kapcsolók)
TanStack Query 5Adatlekérés és gyorsítótár a dashboardon
SonnerFelugró értesítések
GSAPAnimációk a marketingoldalon

Backend és adatok

TechnológiaSzerepe
Supabase (PostgreSQL)Elsődleges adatbázis Row Level Security-vel
QdrantVektoros 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
ClerkBejelentkezés és felhasználókezelés
StripeElőfizetés és számlázás
ResendTranzakciós e-mailek küldése, és a jegyekre e-mailben érkező válaszok fogadása
NodemailerKüldés SMTP-n, ha a szervezet saját e-mail szervert állít be
SentryHibafigyelés (EU-s régió, személyes adatok nélkül)

AI réteg

TechnológiaSzerepe
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-smallEmbeddingek a tudásbázishoz és a kereséshez (az Anthropicnak nincs embedding API-ja)
OpenAI gpt-4o-miniAlternatív chatmodell, szintén eszközhasználattal
Google GeminiAlternatív chat- és embeddingszolgáltató (gemini-2.0-flash-lite-001, gemini-embedding-001), eszközhasználat nélkül
OllamaHelyben futó modellek fejlesztéshez, eszközhasználat nélkül
LangChain text splittersA beolvasott szövegek darabolása (más célra nem használjuk)
Jina ReaderWeboldalak beolvasása tiszta szövegként, böngésző nélkül
PlaywrightAlternatív beolvasó: valódi (headless) böngésző a JavaScriptes oldalakhoz
pdf-parseSzöveg kinyerése feltöltött PDF-ekből
fast-xml-parserAz 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ÉlesFejlesztés
Next.js alkalmazásVercelnpm run dev
AdatbázisSupabase CloudSupabase Cloud (külön projekt, helyi Supabase nincs)
Vektoros adatbázisQdrant CloudQdrant Cloud, vagy Qdrant Dockerben
RedisRedis CloudRedis Cloud külön kulcsprefixszel, vagy Redis Dockerben
E-mailResendMailpit (Dockerben, a levelek nem mennek ki)
HibafigyelésSentrySentry (fejlesztési környezetként jelölve)