Binnen deze fase wordt voornamelijk het achterliggende framework ontwikkeld. Dit zal later de core van het systeem gaan worden. Deze core kan ook gebruikt worden bij andere projecten. Zaken als user login, admin paneel en API worden ontwikkeld.
Het admin paneel wordt ontwikkeld via het CRUD (Create, Read, Update, Delete) ontwerp. Omdat de backend gebaseerd is op een relational database wordt er binnen het admin paneel gebruik gemaakt van relatie velden. Deze relatie velden kunnen algemeen worden ontwikkeld. Als er in latere ontwikkeling een relatie veld nodig is kan deze snel worden gemaakt.
Libraries
Voor de core van dit systeem wordt een combinatie van Quasar (frontend) en API-platform (backend) gebruikt. Deze frameworks kunnen via een GraphQL API makkelijk aan elkaar gekoppeld worden. In de NichePlayer wordt een MVC (Model View Controller) ontwerp gehanteerd.
Quasar Framework
Door positieve ervaringen uit vorige projecten heb ik er voor gekozen de frontend van de NichePlayer te ontwikkelen met het Quasar Framework. Dit javascript framework gebaseerd op VueJS implementeert de Material Design Guide, waardoor het bouwen van een UI eenvoudig is. Quasar zelf is geschreven op het VueJS Framework.
In VueJS wordt de layout opgebouwd uit components, losse blokken code voor bijvoorbeeld een button of een header bar, wat goed aansluit bij de wensen van een creatief platform. Verder is VueJS reactive, wat betekend dat variabelen als een boomstructuur worden doorgegeven aan de verschillende components. Hierdoor blijft de code overzichtelijk.
API-Platform
Onder de motorkap is API-Platform gebaseerd op Symfony Framework, een PHP library wat wordt gebruikt in veel bekende systemen waaronder Nextcloud. Door het systeem te ontwikkelen in PHP is het makkelijk te installeren op verschillende LAMP servers. Binnen API-platform kan makkelijk een API worden ontwikkeld.
GraphQL
GraphQL is een query language voor APIs. In de request wordt meegegeven welke velden en tabellen nodig zijn. De server bouwt vervolgens op basis van deze aanvraag een response. De client krijgt een samengevoegd json object met de velden en relaties die zijn opgevraagd. Op de client wordt deze vervolgens uitgepakt en opgeslagen in een locale opslag.





