⚔ MonsterBattles Docs
Phuc PhamGitHub ↗
AIP · Portfolio · Pagina 00

MonsterBattles

Portfolio van Phuc Pham

Van Kotlin-basisconcepten naar een werkende REST API. Deze leeswijzer laat zien wat ik heb gebouwd, wat ik heb geleerd en waar het bewijs te vinden is.

7 leswekenKotlin & KtorH2 & Exposed13/13 tests geslaagd

Wat is MonsterBattles?

MonsterBattles is een backendapplicatie waarmee monsters beheerd kunnen worden via een REST API. Elk monster heeft een element en statistieken zoals HP, aanval, verdediging en snelheid. Daarnaast kunnen twee monsters een gevecht aangaan, waarbij de applicatie de aanvalvolgorde, schade en winnaar berekent.

Ik gebruik Kotlin voor de applicatielogica, Ktor voor de HTTP API en H2 met Exposed voor gegevensopslag. De code is verdeeld over routes, services, modellen en repositories.

Leeswijzer: zeven weken

De weekpagina's bouwen op elkaar voort. Elke pagina beschrijft de theorie, bevat codevoorbeelden en legt de toepassing binnen MonsterBattles uit. Via onderstaande links is het bewijs per onderwerp terug te vinden.

Broncode en bewijsmateriaal

De GitHub-repository bevat het gerealiseerde Kotlin-project, inclusief broncode, configuratie en tests. Dit portfolio vormt de toelichting op de gebruikte concepten en ontwerpkeuzes.

GitHub: https://github.com/CleanPrompt/MonsterBattles ↗

Diagrammen en systeemontwerp

De onderstaande diagrammen geven een overzicht van de functionaliteit, code-indeling en verwerking van verzoeken. Klik op een afbeelding om de volledige versie te openen. De uitgebreide uitleg staat bij de bijbehorende week.

Use-case-diagram: Welke acties de gebruiker via de API kan uitvoeren.
Use-case-diagramWelke acties de gebruiker via de API kan uitvoeren.
Class-diagram: De belangrijkste modellen en hun onderlinge relaties.
Class-diagramDe belangrijkste modellen en hun onderlinge relaties.
Package-diagram: De indeling van de code in packages en features.
Package-diagramDe indeling van de code in packages en features.
Architectuurdiagram: De samenwerking tussen routes, services, repositories en database.
ArchitectuurdiagramDe samenwerking tussen routes, services, repositories en database.
Sequence: monster ophalen: De afhandeling van een GET-verzoek door de applicatielagen.
Sequence: monster ophalenDe afhandeling van een GET-verzoek door de applicatielagen.
Sequence: monster aanmaken: Het verwerken, valideren en opslaan van een nieuw monster.
Sequence: monster aanmakenHet verwerken, valideren en opslaan van een nieuw monster.
Sequence: battle starten: De componenten die samenwerken bij een battle.
Sequence: battle startenDe componenten die samenwerken bij een battle.
Activity: battle-algoritme: De aanvalvolgorde, schadeberekening en het einde van een gevecht.
Activity: battle-algoritmeDe aanvalvolgorde, schadeberekening en het einde van een gevecht.

Persoonlijke reflectie

Tijdens MonsterBattles heb ik geleerd hoe ik verschillende programmeerconcepten uit Kotlin kan combineren in één backendproject. Vooral het werken met classes, REST API's en de verdeling tussen routes, services en repositories heeft mij geholpen om de structuur van een applicatie beter te begrijpen.

Ik kwam ook compilerfouten en ontbrekende imports tegen. Door de foutmeldingen te onderzoeken en de code aan te passen, heb ik geleerd om gerichter problemen op te lossen. Uiteindelijk zijn alle 13 automatische tests geslaagd en kon ik meerdere API-verzoeken succesvol uitvoeren.

De zeven weekpagina's laten zien hoe ik de theorie heb toegepast. De code, diagrammen en testresultaten ondersteunen dit. Mijn belangrijkste leerpunt is dat software niet alleen moet werken, maar ook overzichtelijk en testbaar moet zijn.

AI-verantwoording

Tijdens het ontwikkelen van MonsterBattles heb ik ChatGPT gebruikt als hulpmiddel bij het begrijpen van programmeerconcepten, het uitwerken van de projectstructuur, het schrijven van code en het oplossen van foutmeldingen. AI heeft ook geholpen bij het opstellen en structureren van de documentatie.

De gegenereerde code en uitleg heb ik als basis gebruikt. Vervolgens heb ik de applicatie zelf uitgevoerd, compilerfouten opgelost en de werking gecontroleerd met automatische tests en HTTP-verzoeken. Alle 13 automatische tests zijn geslaagd. In dit portfolio laat ik zien hoe ik de leerstof heb toegepast en hoe AI het ontwikkelproces heeft ondersteund.

Verder lezen

Begin bij Week 01 – Kotlin Fundamentals en volg de opbouw tot en met Week 07. Wie vooral de technische keuzes wil bekijken, kan direct naar Week 06 – Architectuur & Battles en Week 07 – Persistence & Testing.

MonsterBattles Docs · Code, comments & output