Portfolio Chatbot Backend

API dokumentáció a chatbot.thomasapi.eu backendhez

Ez a külön Next.js projekt csak a portfólió chatbot szerveroldali logikáját futtatja. A frontend oldal kérdéseket küld ide, ez a backend validálja az adatokat, hozzáteszi a portfólió-kontextust, meghívja az OpenAI API-t, majd visszaküld egy rövid választ. Az OpenAI API kulcs itt marad a szerveren, nem kerül a frontendbe.

Endpointok

GET /api/health gyors állapotellenőrzés. Ha minden rendben, { status: "ok" } szerű választ ad.

POST /api/chat a tényleges chatbot végpont. A frontend ide küldi a felhasználó kérdését.

OPTIONS /api/chat CORS preflight miatt kell, hogy a külső frontend domain is hívhassa a backendet.

Kérés formátum

A frontend JSON bodyban ezt küldi:

{
  "message": "Milyen technológiákkal dolgozik Tamás?",
  "language": "hu"
}

A szerver válasza rövid JSON:

{
  "answer": "..."
}

Mi történik ezen a szerveren?

  1. A frontend elküldi a felhasználó kérdését a /api/chat végpontra.
  2. A backend megnézi, hogy a kérés engedélyezett originről jött-e.
  3. Ellenőrzi, hogy az üzenet nem üres-e, és nem hosszabb-e 1000 karakternél.
  4. Egy egyszerű, memóriában tárolt rate limit védelmet alkalmaz IP alapon.
  5. Betölti a portfólióhoz tartozó rendszerutasítást és kontextust.
  6. Az OPENAI_API_KEY szerveroldali env változóval meghívja az OpenAI Responses API-t.
  7. A kapott rövid választ JSON formájában visszaküldi a frontendnek.

Környezeti változók

OPENAI_API_KEY A szerveroldali OpenAI API kulcs.

ALLOWED_ORIGINS Vesszővel elválasztott domainlista, amelyek hívhatják ezt a backendet.

Fejlesztési példa: http://localhost:3000

Production példa: https://thomashorvath.hu

Fejlesztési használat

A backend fejlesztés közben a http://localhost:3001 címen fut.

A frontendből a chatbot hívás URL-je fejlesztéskor jellemzően http://localhost:3001/api/chat.

Később productionben ugyanez lehet például https://chatbot.thomasapi.eu/api/chat.