Participant Observation

Veldonderzoek
Participant obseravtion
Larawall CMS
Orchid
Spotify API

Om kennis te maken met Larawall en mij beter te kunnen verplaatsen in de problemen waar de developers tegenaan lopen met het Larawall CMS heb ik een week lang gewerkt aan een oefenopdracht. Deze opdracht is een verkleinde simulatie met functionaliteiten die in een klantopdracht zitten en wordt ook wel gebruikt tijdens het sollicitatieproces voor nieuwe (senior) developers. Met deze opdracht raak je meerdere functies aan binnen Laravel en Orchid.

De opdracht

Ontwikkel een pagina die toont wat de meest populaire tracks/artiesten zijn onder de deelnemers op de website. Creëer daarvoor een Spotify login waarmee iemand z’n persoonlijke meest populaire tracks en artiesten te zien krijgt en plaats deze tracks/artiesten in een database.

Ontwikkel daarbij een CMS waar de opgeslagen tracks/artiesten in te zien zijn. In het cms kun je filteren op genre en sorteren op het meest populair onder de gebruikers. Per track/artiest kan je zichtbaarheid aan/uit zetten om zo mogelijk een track uit de pagina te filteren. 

In de opdracht werk je dus met een externe Spotify API (Application programming interface) en ontwikkel je een CMS waarin je deze data kan inzien en bewerken.

De uitvoering

De eerste stap was het lokaal halen van het CMS Larawall dat op de Gitlab staat van LiveWall. Dit is het CMS waarmee nieuwe projecten standaard worden opgezet. Dit is het CMS waar later in het project de verbeteringen in worden geimplementeerd. Voor development maakt het platforms team gebruik van PHPstorm als IDE en Laragon als lokale server. 

Na het clonen van de website en het migreren van de data naar de database is er een begin gemaakt om verbinding te maken met de Spotify API. Nadat de data vanuit de Spotify API werd opgehaald zijn er in de database tabellen aangemaakt voor het opslaan van de API data. Het aanmaken van database tabellen gaat in Laravel met Migrations. Migrations gaan ook mee met de commits naar Gitlab, bij het uitvoeren van de migrations krijgen developers de laatste versie van de database structuur. Het is daarnaast ook mogelijk om hier gelijk (mock)data bij mee te sturen met een seeder.

Migratie file van de top nummers van een user uit de spotify API

Na dat het gelukt was om de data opslaan in de database is er een start gemaakt aan de front-end pagina’s die zichtbaar zijn voor de gebruiker. De gebruiker komt binnen op een pagina waar alle topartiesten te top songs van andere gebruikers worden getoont, de gebruiker kan vervolgens inloggen met zijn spotify account en wordt doorgestuurd naar zijn persoonlijke pagina.

Na de front-end was het tijd om aan het CMS gedeelte te beginnen. Tot zover is er nog niks gemaakt dat direct werkt met Orchid elementen in de applicatie omdat dit pas van toepassing wordt in het dashboard. Gelijk is het duidelijk Orchid niet dezelfde structuur heeft als standaard Laravel. Orchid werkt namelijk met screens wat in vergelijking met Laravel de Controller en View tegelijk is.

Orchid architecture (https://Orchid.software/en/docs/)

 

Orchid structuur vergeleken met standaard Laravel (https://Orchid.software/en/docs/)

In het CMS gedeelte zijn er twee pagina’s aangemaakt waar in een tabel de data van alle topartiesten en topnummers worden getoont van alle gebruikers. Hier is er gebruik gemaakt van de standaard Orchid tabel en filteropties

In Laravel wordt de tabel aangemaakt in een Blade file, deze file bestaat uit HTML waar je gemakkelijk met PHP data aan kunt toevoegen. In Orchid wordt daarin tegen de tabel opgezet in een PHP file, deze file plaatst de data vervolgens in een template file.

Tabel gemaakt in Orchid screen

Met behulp van een true or false status kunnen nummer/artiesten verborgen worden. Deze applicatie vereist een aantal koppeltabellen, omdat gebruikers dezelfde artiest/nummer kunnen hebben en deze niet dubbel moeten worden.

Voor het uitrekenen welke artiesten/nummers het populairst zijn onder gebruikers zijn er koppeltabellen nodig en een punten systeem. Aan het hand van het puntensysteem krijgt elk nummer/artiest een cijfer gebaseerd op de populariteit voor de user. Het hoogste is 25 punten voor nr.1 en 1 punt voor nr.25. Deze punten worden bij elkaar opgeteld wanneer de nummers/artiesten al bestaan in de database.

Voorbeeld:

Persoon 1: nr.10, “Snow - Red Hot Chili Peppers”  aantal punten: 16
Persoon 2: nr. 23, “Snow - Red Hot Chili Peppers” aantal punten: 3

Populariteit van “Snow - Red Hot Chili Peppers” = 18 punten

Bevindingen

  • De Orchid documentatie is beperkt; bij het maken van filteropties is er gebruik gemaakt van functies die standaard in Orchid zitten maar niet gedocumenteerd zijn in hun documentatie. Ook input fields zoals radiobuttons missen in de documentatie.
  • Gelimiteerde filter en sorteeropties; bij het maken van een tabel wordt het snel duidelijk dat de filter en sorteer opties beperkt zijn. Bijvoorbeeld de filteropties bestaan alleen uit het kunnen zoeken in een bepaalde kolom.
  • Het zoeken naar oplossingen voor errors die specifiek te maken hebben met Orchid levert weinig tot geen resultaat op in Google, Stack Overflow en soortgelijke platformen.
  • Alle data wordt verwerkt in verschillende functies die gereturned worden in een layout functie. Variabelen lijken niet buiten deze functies gebruikt te kunnen worden.