{ "schemaVersion": 1, "generatedAt": "2026-07-13T18:54:16.667Z", "rootFolderName": "dockdeck", "exportProfile": { "id": "codex-full", "label": "Codex volledig" }, "codexStartMode": { "id": "build-mvp", "label": "MVP bouwen" }, "input": { "projectName": "DockDeck", "shortDescription": "Een premium ogend persoonlijk startdashboard voor Unraid dat Docker-apps automatisch ontdekt, stijlvol groepeert en snelle navigatie biedt naar lokale diensten en eigen favorieten.", "projectIdea": "Bouw een persoonlijke webapp die als standaard startpagina van de browser dient en een prachtig, professioneel en strak afgewerkt overzicht geeft van de diensten op de Unraid-server. De app ontdekt Docker-containers automatisch via Unraid en een beperkte read-only Docker-socketproxy, maar toont nieuwe containers niet automatisch op het hoofddashboard. In het instellingenmenu kan de gebruiker per container zichtbaarheid, categorie, sortering, icoon, naam en URL beheren. Voor Docker-apps wordt standaard de lokale WebUI-URL uit de Unraid-configuratie gebruikt. Daarnaast kunnen handmatig favoriete externe websites worden toegevoegd met naam, URL, icoon, categorie en sorteerpositie. Het dashboard bevat een centrale zoekbalk die zowel zichtbare Docker-apps als favorieten doorzoekt en, wanneer geen lokaal resultaat wordt gekozen, de invoer als Google-zoekopdracht in een nieuw tabblad opent. De gebruiker kan kiezen tussen één overzicht met categorieën onder elkaar en een weergave met afzonderlijke categoriepagina's of tabbladen. Thema's, weergavevoorkeuren en openingsgedrag worden via instellingen beheerd. Externe toegang kan optioneel worden ingeschakeld; wanneer die actief is, haalt een read-only koppeling met Nginx Proxy Manager beschikbare externe URL's op en koppelt die aan de juiste apps, met steeds een handmatige override als terugval. De UI moet aanvoelen als een hoogwaardige, moderne productinterface met sterke visuele hiërarchie, nette details, subtiele animaties en een verzorgde dashboardervaring.", "targetUsers": "Eén primaire gebruiker: de eigenaar en beheerder van de Unraid-server. Deze gebruiker verwacht zonder technische omwegen snel naar lokale Docker-diensten en favoriete websites te kunnen navigeren, zelf te bepalen welke apps zichtbaar zijn, categorieën en sortering te beheren, de startpagina visueel aan te passen en optioneel lokale of externe app-URL's te gebruiken. Er zijn in de MVP geen afzonderlijke gebruikersrollen, accounts of gedeelde profielen.", "problemToSolve": "De gebruiker heeft meerdere Docker-diensten op een Unraid-server en moet momenteel afzonderlijke URL's onthouden, bladwijzers beheren of via verschillende beheerinterfaces navigeren. Bestaande startpagina's sluiten niet volledig aan op de gewenste combinatie van automatische Unraid-detectie, configureerbare zichtbaarheid, categorie-indeling, statusweergave, lokale en externe URL's, favoriete websites, geïntegreerde zoekfunctie en een echt professioneel ogende premium UI.", "desiredOutcome": "De eerste bruikbare versie draait als Docker-container op Unraid en kan als browserstartpagina worden ingesteld. Na de eerste start ontdekt de app de beschikbare Docker-containers, toont ze in een instellingenoverzicht en laat de gebruiker selecteren welke apps op het dashboard verschijnen. Zichtbare apps staan netjes gegroepeerd in configureerbare categorieën, tonen naam, icoon en actuele online- of offline-status en openen hun lokale WebUI in een nieuw tabblad. Favoriete websites kunnen handmatig worden toegevoegd. De zoekbalk vindt apps en favorieten en kan rechtstreeks een Google-zoekopdracht starten. Alle instellingen blijven na een herstart behouden en kunnen worden geëxporteerd en opnieuw geïmporteerd. De totale ervaring moet eruitzien als een afgewerkt premium product dat de gebruiker met plezier dagelijks als startpagina gebruikt.", "successCriteria": "De MVP is klaar wanneer: de applicatie via Docker Compose op Unraid kan worden gestart; beschikbare Docker-containers automatisch worden ontdekt zonder schrijf- of beheerrechten op Docker; nieuw ontdekte containers standaard verborgen blijven; de gebruiker containers zichtbaar of verborgen kan maken; naam, icoon, categorie, sortering en lokale URL per app kunnen worden aangepast; de lokale WebUI-URL waar mogelijk automatisch uit Unraid-templategegevens wordt afgeleid; zichtbare apps naam, icoon en correcte online- of offline-status tonen; status bij het openen en daarna ongeveer elke 30 seconden wordt vernieuwd; categorieën kunnen worden aangemaakt, hernoemd, gesorteerd en toegewezen; zowel een volledig overzicht als categoriegebaseerde navigatie configureerbaar is; favorieten met naam, URL, icoon, categorie en sortering kunnen worden beheerd; de zoekbalk apps en favorieten doorzoekt en overige invoer naar Google stuurt; alle links in een nieuw tabblad openen; licht, donker en minstens één aanvullend thema selecteerbaar zijn; configuratie persistent blijft na container- en serverherstart; back-up en herstel via export en import werken; de app uitsluitend voor lokaal gebruik is ingericht en geen container start-, stop-, restart- of wijzigingsacties bevat; een private Gitea-repository automatisch wordt aangemaakt, lokaal wordt geïnitialiseerd en een eerste bruikbare commit bevat; en de UI een consistent, professioneel en visueel hoogwaardig geheel vormt met nette kaartlay-outs, sterke typografie, duidelijke statusindicatoren, vloeiende maar subtiele interacties en een verzorgde instellingenervaring.", "mustHaves": "Automatische read-only ontdekking van Unraid Docker-containers; nieuwe containers standaard verborgen; instellingenpagina voor zichtbaarheid, naam, icoon, categorie, sortering en URL-overrides; automatische afleiding van lokale WebUI-URL's uit Unraid-templategegevens; read-only containerstatus met verversing bij laden en ongeveer elke 30 seconden; configureerbare categorieën; configureerbare keuze tussen één totaaloverzicht en categoriepagina's of tabbladen; handmatige favorieten voor externe websites; centrale zoekbalk voor apps, favorieten en Google; openen van alle doelen in een nieuw tabblad; licht, donker en aanvullende ingebouwde thema's; persistent bewaren van instellingen in SQLite; export en import van configuratie; Docker- en Docker Compose-configuratie voor Unraid; beperkte Docker-socketproxy zonder beheerrechten; optionele read-only Nginx Proxy Manager-koppeling voor externe URL's met handmatige fallback; duidelijke foutstatus wanneer Unraid, Docker-proxy of Nginx Proxy Manager tijdelijk onbereikbaar is; automatische initialisatie van een private Gitea-repository via environmentvariabelen; en een uitzonderlijk verzorgde professionele UI met premium dashboardlook, consistente componenten, strak kaartdesign, goede witruimte, duidelijke visuele hiërarchie, subtiele hover- en transition-effecten, nette iconografie en een afgewerkte instellingenomgeving.", "niceToHaves": "Drag-and-drop sortering van apps en categorieën; automatisch herkennen van bekende applicatie-iconen; favicon-import voor favorieten; meerdere aanvullende kleurthema's; compacte en ruime tegelweergave; achtergrondafbeeldingen of subtiele dashboard-achtergronden; sneltoets om de zoekbalk te focussen; recente of meest gebruikte apps; optionele statuslatentie en responstijd; import van bestaande browserbladwijzers; meerdere dashboards of profielen; PWA-installatie; mobiele optimalisaties buiten de basisresponsiviteit; geavanceerde automatische matching tussen Nginx Proxy Manager-hosts en Docker-containers; handmatige statuscontrole voor favoriete websites; extra micro-interacties en visuele personalisatieopties zolang die de strakke premium uitstraling ondersteunen.", "outOfScope": "Containers starten, stoppen, herstarten, verwijderen of wijzigen; Docker Compose-stacks beheren; Unraid-systeembeheer; terminal- of shelltoegang; logviewer; resourcegrafieken en uitgebreide monitoring; notificaties en incidentbeheer; publieke internettoegang configureren; Authentik- of andere SSO-integratie; eigen gebruikersaccounts, rollen of multi-userondersteuning; opslag van echte API-tokens in de repository of browser; automatische wijzigingen aan Nginx Proxy Manager; cloudhosting; mobiele native apps; AI-functionaliteit; synchronisatie tussen meerdere Unraid-servers; automatische publicatie van diensten naar het internet.", "constraints": "De MVP moet als Docker-container op de bestaande Unraid-server draaien en alleen vanaf het lokale netwerk bereikbaar zijn. De app moet zonder eigen login bruikbaar zijn, omdat netwerktoegang de primaire beveiligingsgrens vormt. Alle Docker-toegang moet read-only verlopen via een beperkte socketproxy; de hoofdcontainer krijgt geen directe onbeperkte Docker-socket. Unraid-templategegevens mogen alleen worden gelezen. Nginx Proxy Manager wordt uitsluitend read-only benaderd. De applicatie moet bruikbaar blijven wanneer Nginx Proxy Manager niet is geconfigureerd of tijdelijk niet bereikbaar is. Er mogen geen betaalde externe diensten nodig zijn. Alle configuratie moet persistent blijven bij herstart en eenvoudig te back-uppen zijn. Codex moet een nieuwe private repository in de persoonlijke Gitea-omgeving aanmaken en mag geen secrets hardcoderen. Visuele kwaliteit is belangrijk, maar de UI mag niet onnodig zwaar of traag worden; professionele polish moet samengaan met vlotte prestaties als browserstartpagina.", "projectType": "webapp", "runtimeModel": "interactive-app", "updateStrategy": "polling", "persistenceModel": "sqlite", "deploymentTarget": "docker-unraid", "repositoryState": "repo-needed", "preferredStack": "TypeScript als hoofdtaal; React met Vite voor de frontend; Node.js met Fastify voor de backend; SQLite met Drizzle ORM voor persistentie en migraties; gedeelde types en validaties met Zod; een eenvoudige REST-API tussen frontend en backend; een zorgvuldig opgebouwd design system met design tokens, CSS-variabelen en herbruikbare UI-componenten; een moderne componentbibliotheek of headless aanpak voor toegankelijke basiscomponenten; iconenset van hoge kwaliteit; subtiele motion via lichte animatielogica; Docker multi-stage build en Docker Compose voor Unraid; Vitest voor unit- en integratietests; Playwright voor browsertests. Gebruik een overzichtelijke repository met duidelijk gescheiden frontend-, backend- en shared-mappen. Richt de frontend expliciet in op een premium dashboardervaring met consistente spacing, kaartsystemen, typografie, kleurgebruik, statusbadges en instellingenpanelen.", "dataInvolved": "Docker-apps met container-ID, technische naam, weergavenaam, afbeelding, ontdekt icoon, online- of offline-status, lokale WebUI-URL, optionele externe URL, zichtbaarheid, categorie, sorteerpositie, detectiebron en laatste statuscontrole; categorieën met naam, icoon, sorteerpositie en weergave-instellingen; favorieten met naam, URL, icoon, categorie en sorteerpositie; dashboardinstellingen met gekozen thema, weergavemodus, openingsgedrag, zoekprovider, pollinginterval en externe-toegangsschakelaar; integratie-instellingen zonder geheime waarden; import- en exportbestand met versieerbaar configuratieschema; synchronisatiestatus en beperkte foutinformatie voor Unraid, Docker-proxy en Nginx Proxy Manager.", "integrations": "Unraid Docker-templatebestanden of beschikbare Unraid-metadata voor containernaam, WebUI en iconen; een beperkte read-only Docker Socket Proxy voor containerinventaris en runtime-status; Nginx Proxy Manager API in read-only modus voor optionele externe hostnamen en URL's; Google Search via een gewone zoek-URL zonder API-key; Gitea API voor het aanmaken van een private repository en het configureren van de Git-remote.", "credentialsExpected": true, "securityPrivacyNotes": "Gebruik uitsluitend environmentvariabelen voor gevoelige configuratie. Voorzie minimaal variabelen zoals GITEA_URL, GITEA_TOKEN en GITEA_OWNER voor repository-initialisatie en optionele NPM_URL, NPM_USERNAME en NPM_PASSWORD of een ondersteund read-only token voor Nginx Proxy Manager. Gebruik voor de Docker-koppeling geen onbeperkte socketmount in de applicatiecontainer, maar een afzonderlijke proxy met alleen de minimaal noodzakelijke read-endpoints. Sla secrets nooit op in SQLite, exports, logs, frontendbundels, testfixtures of Git. Toon gevoelige integratiewaarden gemaskeerd in de UI. De app mag geen Docker-mutaties uitvoeren en mag nooit containers starten, stoppen, herstarten, verwijderen of aanpassen. De MVP heeft geen eigen authenticatie en moet daarom standaard alleen op een lokaal bindadres of afgeschermd Docker-netwerk worden gepubliceerd. Externe toegang via Nginx Proxy Manager wordt alleen voorbereid; correcte authenticatie en toegangscontrole via bijvoorbeeld Authentik blijven de verantwoordelijkheid van een latere deploymentstap.", "qualityBar": "De interface moet eruitzien als een professioneel premium product en niet als een simpel hobbydashboard. Verwacht een moderne, luxueuze en verzorgde UI met uitgebalanceerde witruimte, consistente kaartcomponenten, hoogwaardige iconografie, duidelijke typografie, nette schaduwen of diepte waar passend, subtiele animaties, verzorgde empty states, sterke visuele hiërarchie en een kalme maar rijke look-and-feel. De belangrijkste startpagina moet snel laden en direct bruikbaar zijn wanneer integraties traag of tijdelijk offline zijn. Fouten moeten begrijpelijk worden getoond zonder technische stacktraces. Ontbrekende iconen of URL's moeten nette fallbacks hebben. Instellingen moeten veilig opgeslagen worden en bij foutieve invoer gevalideerde feedback geven. De interface moet responsief zijn voor desktop, tablet en basisgebruik op mobiel. Toetsenbordnavigatie, zichtbare focus, semantische HTML en voldoende kleurcontrast zijn vereist. Statuspolling mag geen zichtbare flikkering veroorzaken en moet stoppen wanneer de pagina niet actief is of verstandig worden vertraagd. De code moet modulair, getypeerd, gedocumenteerd en zonder onnodige complexiteit zijn. Esthetische kwaliteit is voor deze MVP een kernvereiste en niet louter een extra.", "testingExpectations": "Unit tests voor URL-normalisatie, categorie- en sorteervoorwaarden, zoekresultaten, configuratievalidatie, import- en exportversies, container-naar-Nginx-hostmatching en permissiegrenzen; backend-integratietests met gemockte Unraid-templategegevens, Docker Socket Proxy en Nginx Proxy Manager; SQLite-migratie- en persistentietests; tests die aantonen dat geen Docker-mutatie-endpoints of beheeracties worden gebruikt; browsertests voor eerste ingebruikname, containers zichtbaar maken, categorieën beheren, favorieten toevoegen, zoeken, Google-fallback, thema wisselen, weergavemodus wijzigen, URL openen en configuratie exporteren en importeren; visuele UI-smoketests voor kernschermen zoals dashboard, categorie-overzicht en instellingen; Docker-buildtest en Compose-smoketest; een live read-only validatie op Unraid waarbij discovery, status en lokale WebUI-URL's worden gecontroleerd zonder containers te wijzigen.", "knownRisks": "Unraid-templatebestanden en WebUI-velden kunnen per container of template verschillen, waardoor URL-detectie fallbacks en handmatige overrides nodig zijn. Niet iedere container heeft een WebUI, correct icoon of eenvoudig herkenbare poort. Het automatisch koppelen van Nginx Proxy Manager-hosts aan containers kan dubbelzinnig zijn en moet daarom transparant, overschrijfbaar en niet-destructief blijven. Een lokale app zonder login is alleen veilig zolang netwerktoegang correct is afgeschermd. Toegang tot Docker-informatie blijft gevoelig, zelfs in read-only modus, waardoor de socketproxy strikt moet worden beperkt. Gitea-repositorycreatie kan mislukken door ontbrekende rechten, een bestaande naam of onbereikbaarheid; de lokale repository moet dan intact blijven en een duidelijke herstelstap tonen. Hoge UI-ambities kunnen de scope doen groeien door eindeloos finetunen van styling en details; daarom moet de premium uitstraling via een consistent design system en duidelijke acceptatiecriteria bewaakt worden zonder de kernfunctionaliteit te vertragen." } }