De Motor van Keltion
Welkom! Deze kleine app is letterlijk het werkpaard van de hele Keltion software. Omdat het "bezoeken", crawlen, renderen, simuleren en opnemen van websites verschrikkelijk veel CPU en werkgeheugen kost, voeren we deze acties nooit live uit in de internetbrowser van de gebruiker (de Frontend).
1. Jouw normale website (bijv. in Next.js of Vercel) merkt dat een klant wekelijks gescand moet
worden.
2. Jouw website doet niet de scan, maar stuurt simpelweg een "taak" (berichtje)
naar déze API server.
3. Deze API-server vangt de taak op, en antwoordt in 1 milliseconde: "Begrepen, ik ga ermee aan de
slag" (HTTP 200). Jouw website kan weer ongestoord heel snel doorgaan met werken.
4. Deze VPS gaat op de achtergrond langdurig de robots.txt ontleden, browsers opstarten via
Playwright, en schrijft de foto's en de data stilletjes direct weg naar jouw Supabase
Database.
Cronjobs of Queues aan de voorkant
Verwacht dus nooit dat als je deze server benadert, hij na 5 seconden alle data terug in je browser stuurt. Wat hij doet staat los van de afzender.
Dit betekent dat je in je Vercel app perfect cronjobs (geplande taken, elke maandag om 03:00) kunt programmeren die in de achtergrond deze API server een duuwtje in de rug geven. Alle magie verschijnt vanzelf veilig in je database tabellen (pages bevolkt via Crawler, page_logs bevolkt via Audit).
Welke auth-keys worden ondersteund?
Stuur altijd een Authorization: Bearer <JOUW_KEY> header mee. Deze API ondersteunt 3 soorten keys uit het Supabase ecosysteem:
- 1. Jouw Ingelogde Gebruiker (User JWT) 🏆 Aanbevolen: De unieke, tijdelijke access-token van de gebruiker die momenteel is ingelogd in jouw frontend app. Ideaal als gebruikers credits verbruiken of eigen jobs starten.
- 2. Service Role Key: De "master key" van Supabase. Geweldig voor backend cronjobs waar geen specifieke gebruiker aan te pas komt. (Houd deze key veilig op je server!)
- 3. Anon Key: De publieke anonieme key voor snelle openbare tests.
/api/workers/crawler
1. Activeer de Crawler
Een snelle, onzichtbare manier om overal URLs uit een site te trekken, ze te filteren via de bots.txt ignore-lijst, en ze kaal op te slaan in Supabase. Meest logisch om wekelijks af te roepen via je Cronjob, voor alle systemen op je app.
Wat moet de Vercel/Cronjob opsturen?
| Naam | Uitleg |
|---|---|
SystemURL *Verplicht |
De URL van de site (bijv. https://domein.nl). |
SystemID *Verplicht |
Het unieke ID van het systeem in de DB. De URL's worden vastgeschroefd aan dit ID. |
Payload Voorbeeld Code
/api/workers/playwright-audit
2. Pagina Simulator (Audit & SEO)
Wanneer de pagina eenmaal bekend is bij je, stuur deze API aan om het brute rekenwerk te doen. Hij huurt feitelijk in zijn geheugen tijdelijk een MacBook, opent Chromium, gaat echt met trage muis vegen, checkt alle netwerk request errors, trekt DOM uit met Cheerio, maakt screencasts en png screenshots, en slaat werkelijk alles op in page_logs.
Wat moet de Queue opsturen?
| Naam | Uitleg |
|---|---|
SystemID *Verplicht |
Het ID van het stamsysteem. |
PageID *Verplicht |
Het ID van de webpagina. |
PageURL *Verplicht |
De specifieke URL (zoals /contact of /home). |
deviceSelection *Verplicht |
Beslis per job hoeveel apparaten (mobile / tablet / desktop) parallel moeten renderen.
Minimale setup: Stuur een leeg object per gewenst apparaat, bijv. "mobile": {}. De API kiest dan zelf een populair apparaat profiel.Geavanceerde setup: Overschrijf de standaard instellingen met je eigen voorkeuren:
|