Deel 1
Deel 1
Tijdens het eerste deel van het project bouw je de UI van je applicatie uit, voorzie je een databaseschema en implementeer je registratie en login functionaliteiten.
UI
Om de UI van de applicatie uit te bouwen, gebruik je verplicht een AI-tool om je prototype op te bouwen. De docenten raden v0.dev, maar je bent vrij om een andere tool te kiezen, mits deze aan de volgende voorwaarden voldoet:
- De tool kan gebruikt worden om iteratief een volledige applicatie te bouwen (het is geen probleem als je omwille van de beperkingen op gratis gebruik enkel een prototype kunt generen). Onder volledige applicatie verstaan we een applicatie die uitgevoerd kan worden zonder extra code te moeten schrijven.
- De tool maakt het mogelijk om het resultaat van je AI-prototyping te delen met je docenten (zonder dat hiervoor een account aangemaakt moet worden). Dit gedeelde resultaat moet de geschiedenis van de iteratieve aanpassingen bevatten, bekijk de Voorbeeldchat om een beter idee te krijgen over wat we moeten zien.
- De tool kan een applicatie bouwen in Next.js, Tailwind en shadcn/ui.
Voor de specifieke evaluatiecriteria verwijzen we door naar de rubric in Canvas.
Combinatie met startbestanden
De startbestanden bevatten verschillende nuttige bestanden. Enerzijds de linting en formatting configuratie, anderzijds ook utility functies en hooks voor authenticatie, form actions, server functions, hook form, ...
We verwachten dat je het project dat door de AI-tool gegenereerd is samen voegt met de startbestanden zonder de startbestanden te overschrijven.
Database
Je voorziet een volledig databaseschema dat opgebouwd is met één of meer migrations in Prisma. Natuurlijk komt dit schema overeen met de UI die je door een AI-tool heb laten genereren, er mogen hier en daar nog enkele kleine verschillen zijn, maar de grote lijnen moeten dezelfde zijn.
Je relationeel model bevat minstens 8 tabellen, één veel-op-veel relaties en één tabel met minstens 7 attributen (exclusief primary key). Veel-op-veel relaties tellen mee als een tabel, ook als je deze op de achtergrond laat aanmaken door Prisma en deze niet expliciet in je Prisma schema opneemt. Enums tellen niet mee als een tabel.
Aangezien je ook authenticatie moet voorzien, heb je minstens een User en Session tabel nodig, daarnaast is er natuurlijk ook een Role enum aanwezig. Er zijn dus nog 6 andere tabellen nodig.
Testdata
Om je applicatie te testen voorzie je een seed script waarmee er minstens 10 records per tabel worden aangemaakt.
Voor de Session en User tabellen volstaat het om 1 record (gebruiker) aan te maken, tenzij je met meerdere rollen gewerkt hebt, dan maak je voor elke rol een gebruiker aan.
Voeg de inloggegevens voor elke gebruiker toe aan je readme.md bestand.
Om testdata te genereren kan je eventueel gebruik maken van faker, of aan een AI vragen om testdata te genereren.
Authenticatie
De enige CRUD-operaties die moeten werken in deel 1 van je project zijn inloggen en registreren. Zorg ervoor dat deze op een correcte manier geïmplementeerd zijn, je mag al validatie toevoegen via Zod, maar dit moet niet.
Je implementeert deze authenticatie via een JSON Web Token die in een veilig HTTP-only cookie bewaard wordt. Deze token moet alle informatie over de gebruiker en sessie bevatten.