Onderwerp: Ontwikkeling Narrow Casting Systeem SnowWorld (Challenge 18)

Context: Ik werk aan een project voor SnowWorld waarbij ik een narrowcasting platform moet bouwen. Gebruik het bijgevoegde Markdown-bestand als de leidraad voor de functionele eisen, deliverables en technische randvoorwaarden. We gaan dit systeem bouwen met Node.js als backend server.

Opdracht voor Kiki: Fungeer als een Senior Full-stack Developer. Ontwerp en schrijf de basiscode voor een schaalbaar narrowcasting systeem dat bestaat uit de volgende onderdelen:

1. Systeem Architectuur:

    Backend: Een Node.js server (met Express) die fungeert als centrale hub.

    Database: Stel een structuur voor (bijv. MongoDB of PostgreSQL) voor het opslaan van content-metadata en planningen.

    Frontend (Admin Dashboard): Een interface voor beheerders om content (afbeeldingen, video's, livestreams, social media feeds) te uploaden en in te plannen.

    Client (Display App): Een web-based player die de content ophaalt van de server en schermvullend weergeeft op de schermen in SnowWorld.

2. Specifieke Functionaliteiten (gebaseerd op Challenge 18):

    Content Planning: Mogelijkheid om per zone in SnowWorld (bijv. de skibaan, het restaurant, de receptie) verschillende playlists te tonen.

    Real-time Updates: Gebruik WebSockets (Socket.io) zodat content direct ververst wanneer de beheerder een aankondiging of skipisteschema aanpast.

    Content Types: Ondersteuning voor afbeeldingen, video, en een widget voor actuele sneeuwinformatie.

3. Technische Output:

    Genereer een mappenstructuur voor het project.

    Schrijf de server.js (Node.js/Express) met API endpoints voor content management.

    Geef een voorbeeld van het technisch ontwerp (K1-W2) in de vorm van een database schema of een flowchart van de dataflow.

    Zorg dat de code voldoet aan de eisen voor documentatie en onderhoudbaarheid.

4. Instructies:

    Houd de UI modern en passend bij de winterse uitstraling van SnowWorld.

    Geef uitleg bij de gemaakte ontwerpbeslissingen zodat ik deze kan gebruiken voor mijn documentatie (Deliverable K1-W2).