Frontend en backend keuzes

In dit hoofdstuk kun je de criteria vinden welke wij gebruikt hebben om frameworks en libraries te kiezen.

Deze tabellen zijn met toelichting te lezen in ons verantwoordingsdocument.

Talen en frameworks

ToolNaamOmschrijving
LLM ManagerOllamaEen LLM-manager die het eenvoudig downloaden en runnen van Large Language models via de command line mogelijk maakt. Uitgebreide integratie met het LangChain framework via ChatOllama.
LLM frameworkLangChainEen open-source LLM-framework beschikbaar voor Javascript en Python. LangChain biedt veel opties voor RAG-taken, zoals document loaders en embedding models.
ProgrammeertaalPythonEen veelzijdige programmeertaal voor machine learning en AI-taken.
In-memory data storeRedisEen key-value database, cache en vector store voor het opslaan van quizzen en vectoren uit cursusmaterialen.
API specificatieOpenAPI/SwaggerTools voor gestructureerd specificeren en visualiseren van API-endpoints.
Queue systeemCeleryEen queue systeem om de backend responsief te houden.
Queue systeem dashboardCelery flowerEen dashboard voor het monitoren van de Celery queue.
ContainerisatietoolDockerContainerisatietool voor het platform-agnostisch uitrollen van applicaties.

Backend-framework

FrameworksPythonRESTful APIData validationSwagger integratieUnittest ondersteuningQueuesysteem ondersteuningUitgebreide documentatieWebSockets of Server-Side Events (SSE)
Django REST
Flask REST
FastAPI
Pyramid
Falcon
Bottle
Eve
Sanic
Tornado
Hug
TurboGears

Op basis van deze vergelijking hebben we gekozen voor FastAPI.

Frontend-framework

FrameworksSPAUitgebreide documentatie
Vue.js
React
Angular
Svelte
Solid
Lit
Qwik
Ember.js

Op basis van deze vergelijking en op basis van de bestaande kennis binnen onze groep, hebben we gekozen voor React.

CSS-framework

Om te helpen de styling sneller te kunnen bouwen hebben we enkele CSS-frameworks bekeken:

BootstrapMaterial UIRadix UIshadcn
Versie5.3.36.1.5Oktober 1, 2024August 2024
Responsive
React-ondersteuning⚠️ (Middels React Bootstrap)
Customization optiesKleur, fontsKleur, fontsAccentkleur, radius, schaalKleur, radius
Customization methodeVariable overrides middels Sass filesTheme overrides (tool: mui-theme-creator), of global CSS overridesVia playgroundCSS variabelen of Tailwind CSS utility classes
Menu bar (zoals Brightspace)✅ (Navbar)✅, (App bar)✅, (Navigation Menu)✅, (Navigation Menu)
Card
Breadcrumbs
Tree view
Visuele gelijkenis met Brightspace (out of the box)⚠️ (In zekere mate)

Op basis van deze vergelijking hebben we gekozen voor Material UI.