Skip to content

Technisch Ontwerp

Databasemodel

MySQL wordt gebruikt als relationele database voor het opslaan van gebruikersgegevens, app-instellingen, chatgeschiedenis en andere relevante informatie.

Externe koppelingen

OpenAI

De frontend stuurt gebruikersquery's naar de Laravel API, die vervolgens de verzoeken doorstuurt naar de ChatGPT AI-engine. De AI-engine verwerkt de query's en genereert contextueel relevante reacties, die worden teruggestuurd naar de frontend en aan de gebruiker worden weergegeven.

Performance bewaking

Architectuur

Applicatie

De applicatie wordt ontwikkeld met behulp van het Nuxt framework, gebaseerd op Vue.js, voor een krachtige en responsieve gebruikerservaring. Capacitor wordt gebruikt voor het maken van native mobiele apps voor iOS en Android. De styling zal geschreven worden in SASS.

Monorepo

De applicatie wordt gebouwd op het principe van een monorepo, alle apps zullen dus in één git repository geplaatst worden. Hierbij wordt gebruik gemaakt van Nuxt Layers en Ionic Multi App Projects. Met deze setup delen alle apps dezelfde codebase, maar kan ook app-specifieke code en assets toegevoegd worden.

Whitelabels

Thema instellingen zoals kleuren en voorkeuren kunnen ingesteld met configuratiebestand binne het project. Door het meegeven van de app ID kan de whitelabel app gebuild en gepublished worden.

API

De API wordt gebouwd met behulp van het Laravel framework, dat een solide basis biedt voor het ontwikkelen van krachtige en schaalbare RESTful API's.

Beveiliging

Voor het gemakkelijk implementeren van authenticatie zal gebruik gemaakt worden van de Laravel Breeze starterkit, die gebasseerd is op Laravel Sanctum. Laravel Sanctum bied o.a. standaard bescherming tegen XSS (Cross-Site Scripting) en CSRF (Cross-Site Request Forgery).

De web build zal gebruik maken van cookie-based authenticatie. Omdat de native build geen requests kan doen vanaf het wijsneus domein is het niet mogelijk om gebruikt te maken van cookies. Daarom gebruiken we hiervoor een stateless authenticatie setup. De authenticatie zal gebeuren via het meesturen van Bearer Tokens in de request headers. Belangrijk is om de api dusdanig in te stellen dat die kan omgaan met statefull en stateless requests. De native build zal om deze reden ook geen CSRF beveiliging hebben. Omdat de app in een geïsoleerd omgeving draait zal dit ook niet nodig zijn.

Bronnen

@TODO https://stefanzweifel.dev/posts/2023/10/29/spatielaravel-data-is-probably-the-best-way-to-store-settings-in-your-laravel-app/#:~:text=I either added separate columns,added a generic settings JSON