Opgave
Opgave
Voor het vak backend frameworks werk je individueel een project uit met Next.js, Tailwind, shadcn/ui, Prisma en Postgres.
Voor de dagopleiding wordt dit project geëvalueerd in twee delen, in het werktraject moet het volledige project in één keer ingeleverd worden. De puntenverdeling is in beide gevallen gelijk. Het eerste deel telt voor 15% van het eindcijfer, het tweede deel voor 85%.
De deadline kan je vinden op Canvas, na deze deadline ligt je jouw project toe tijdens een mondelinge verdediging.
Toegestane hulpmiddelen
Je mag voor dit project gebruik maken van bronnen zoals tutorials, voorbeelden en StackOverflow. Dit betekent echter niet dat je project hier volledig op gebaseerd is. We controleren je inzendingen en indien grote gelijkenissen met online bronnen gedetecteerd worden, dan is dit plagiaat en wordt een fraudeprocedure gestart.
Generative AI-tools mogen gebruikt worden, maar we verwachten dat je alle code die door deze tools gegenereerd wordt kan verklaren. Dit wordt dan ook ondervraagd op de mondelinge verdediging.
Het is toegestaan om delen uit de lesvoorbeelden of opgeloste oefeningen te herbruiken. Als je dit doet, moet je dit op een innovatieve manier doen, anders verdien je hier geen punten mee. Als je twijfelt of jouw code voldoende verschillen vertoond met de code uit de lessen, dan kan je jouw lector hier natuurlijk over contacteren.
De enige uitzondering op bovenstaande regel is de code die in het startrepository beschikbaar is, aangezien deze code veelgebruikte taken afzondert in herbruikbare functies en aangezien hier weinig tot geen variate in mogelijk is, mag je deze code integraal gebruiken in je eigen project. De code die in de les besproken is moet je kunnen uitleggen, maar voor de code die aangereikt wordt door de docenten en waarvan de werking niet uitgelegd is, moet je enkel kunnen uitleggen waarvoor deze dient en hoe je deze moet toepassen.
Begeleiding
Tijdens het bouwen van de applicatie is het toegestaan raad te vragen aan de begeleidende docent.
Vragen over leerstof die gezien is tijdens de lessen worden zelden beantwoord, je wordt meestal doorverwezen naar het relevante lesmateriaal. Als je echter kan aantonen dat je het cursusmateriaal gebruikt heb en geprobeerd hebt om een feature zelf te implementeren, word je geholpen, ook als dit gaat over leerstof die wel in de les behandeld is. Vragen over features van Next of React die in geen enkele les of oefening gezien zijn worden sowieso beantwoord.
Met vragen over conceptuele problemen zoals het structureren van je app of dingen die je niet geprogrammeerd krijgt, maar die los staan van de geziene leerstof kan je altijd terecht bij je begeleidende docent. Je wordt echter gecoacht in het vinden van een oplossing en krijgt deze niet voorgeschoteld.
Indien er problemen ontstaan door bibliotheken die niet meer werken door updates, updates van de IDE, deprecated features … kan je hier natuurlijk ook hulp voor vragen.
Als je code van ergens gecopy-pastet hebt (of dat nu van een AI tool komt of van 'het internet'), dan kunnen de docenten hulp weigeren als ze zien dat je de code onvoldoende zelf begrijpt. Uitzonderingen hierop zijn code voorbeelden die rechtstreeks uit de documentatie van de tool/library/framework komen.
Als je omwille van een probleem denkt dat je de deadline niet zal halen, geef dat zo snel mogelijk aan bij de docent zodat we samen kunnen bekijken wat er wel of niet mogelijk is voor jouw situatie.
Kwaliteit
De kwaliteit van je code wordt beoordeeld op basis van onderstaande, niet exhaustieve, lijst. Omdat je voor een functionerend project al veel punten kunt verdienen (80%) wordt de kwaliteit en complexiteit van je code streng beoordeeld.
- Naamgeving van variabelen
- Correct gebruik van enkelvoud/meervoud in de namen
- Duidelijke namen
- Types
- Types van variabelen
- Types van functies
- Gebruik van enums waar toepasbaar
- Geen diep geneste callbacks
- Gebruik van interfaces/types in de plaats van objecten met het any type
- Consistentie in de code, geen mix van () => {} en function() {} in eenzelfde bestand.
- Volgen van de linting regels die geconfigureerd zijn in ESLint en de stijlregels die geconfigureerd zijn voor Prettier (deze regels mogen aangepast worden, zolang je één bepaalde code-style aanhoud en niet alle regels op 'off' zet, is er geen probleem)
- Geen hard gecodeerde gegevens
- Opsplitsen in componenten waar nuttig
- Leesbaarheid
- Bruikbaarheid van de UI
- Aanwezigheid van Suspense boundaries
- Aanwezigheid van indicators tijdens het laden en bewerken van data
- Features die boven onderstaande minimumvereisten uitsteken
- Correct gebruikt van server en client components
Combinatie met Mobile Development
Het is toegestaan om dit project te combineren met je project van Mobile Development. Dit doe je door een API te schrijven waarmee je mobiele applicatie communiceert, deze API moet beveiligd worden met een JSON Web Token (JWT). Het is natuurlijk toegestaan om de API uit te breiden met extra endpoints die dingen doen die uniek zijn aan je mobiele applicatie en niet gebruikt worden door je Next applicatie. Voor meer informatie verwijzen we naar appendix.
Als je jouw projecten voor Mobile development en Backend Frameworks combineert via een API, verdien je hier extra punten mee. Je kan 20/20 scoren zonder een API te bouwen, maar als je een API bouwt kan je daar 1/20 bonus punten mee verdienen.
Git
Je maakt verplicht gebruik van een Git repository via de GitHub classroom link die je in Canvas vindt. Dit is de enige plaats waar je code moet inzenden, code die via andere kanalen ingezonden wordt, wordt niet beoordeeld.
Als je de deadline mist, is dit jouw verantwoordelijkheid. Zet je code vanaf het begin op git en commit elke wijziging, zo wordt het onmogelijk om de deadline te missen.
Enkel code die op de main branch gepusht is wordt gecontroleerd. Je maakt natuurlijk wel gebruik van andere branches, maar als het niet gemerged is met de main branch, wordt het niet beoordeeld.
Als je de deadline mist door problemen met git, is dit jouw verantwoordelijkheid. Zet je code vanaf het begin op git en commit elke wijziging, zo vallen problemen (of gaten in je kennis van git) al snel op, en kan iemand je er nog mee helpen. Zo wordt het onmogelijk om de deadline te missen.
Mondeling examen
Het mondelinge examen verloopt via Teams. Zet voordat je opgebeld wordt de code van het project open in WebStorm (of soortgelijke editor), we vragen dat je minsten 10 minuten voor het afgesproken tijdstip bereikbaar bent. Zorg er natuurlijk ook voor dat je website gecompileerd is en geopend is in een browser.
Het examen verloopt als volg:
- Je begint met een demonstratie van de functionaliteit van de applicatie, als je bijzonder indrukwekkende dingen geïmplementeerd hebt vermeld je dat hier zeker.
- Je docent stel een aantal vragen over de applicatie. Dit zijn in eerste instantie architecturale vragen zijn (structuur en samenhang van de code) en vragen over de werking van de code. Daarnaast kunnen er ook minder goede delen van de code aangekaart worden en kunnen we je vragen wat er verkeerd is en hoe je het zou oplossen. De eerste soort vraag dient om af te toetsen of je de code begrijpt en je project zelf geschreven heb, de laatste vragen dienen om eventueel een (klein) beetje punten meer te kunnen geven dan als we puur naar de ingezonden code zouden kijken.