Aan de muur van een gedeelde kantoorruimte hangt een scherm. Daarop staat wat er die dag toe doet: de tijd, wie er jarig is, welke pipelines er draaien, hoe de sprint ervoor staat, wat er in de agenda staat en welk nummer er speelt.
Elke afnemer draait een eigen installatie op een eigen subdomein, met een eigen database en eigen instellingen. Het heeft eerst bij Specialist in Websites gedraaid en draait nu bij Cyso. Doorverkopen is het idee, maar zover is het nog niet.
Waarom
Om als bedrijfzijnde intern te pronken met belangrijke informatie, progressies van projecten of te weten wie er gefeliciteerd moet worden met een verjaardag. Met het tv-dashboard toon je alles tegelijkertijd instelbaar door één beheerder.
Hoe het werkt
Laravel met Inertia en Vue 3 en een beheerpaneel op Nuxt UI. Het scherm zelf en het beheer zijn twee losse oppervlakken met verschillende regels: het scherm mag mooi zijn, het beheerpaneel moet vooral duidelijk zijn.
Wat erop komt is opgebouwd uit modules, inmiddels drieëntwintig. Een klok, verjaardagen, een agenda, een poll, vrije tekst, medewerker van de maand, pipelines en release-tags uit GitLab, sprint- en roadmapoverzichten en tijdregistratie uit YouTrack, uren- en omzetcijfers uit Simplicate, wat er op de Sonos speelt en een statusmonitor. En een module die de standen uit Old School RuneScape haalt, want een scherm dat de hele dag hangt mag ook iets tonen waar niemand om gevraagd heeft. Elke module haalt zijn eigen gegevens op en heeft zijn eigen instellingen.
De code is zo opgezet dat het kan worden afgenomen door elke partij. Het doel is dan ook om de dashboard-app te verkopen aan bedrijven met een lege TV.
Kernpunten waar ik trots op ben
- Multi-tenant opzet: eigen installatie, database en instellingen per afnemer, met een wizard die een nieuwe installatie door de eerste configuratie loodst.
- Realtime updates via Reverb, met kanalen per module. Sommige events via back-end polling, sommige via webhooks.
- Compatibiliteit met oude tv-browsers. Het scherm hangt aan een televisie en die browsers lopen soms jaren achter.
- 23+ modules met hun eigen instellingen. Elke module haalt zijn eigen gegevens op, heeft zijn eigen configuratie en zijn eigen lege staat.
- Geen hardgecodeerde waarden. Elk endpoint, elk project en elke credential is een instelling per installatie, en credentials worden versleuteld opgeslagen.
Wat er nog niet in zit
De publieke verkoopsite bestaat nog niet; het kale domein staat er wel voor gereserveerd. Verder staan er nog genoeg ideeën op de planning; dit project blijft voortdurend in ontwikkeling.
Wat het opleverde
Veel ervaring met realtime data: eerst met Pusher en later met Reverb en met het inrichten van kanalen en het doorsturen van wijzigingen daarover.
Verder is dit het project waar ik het langst aan heb gewerkt wat in gebruik is. Bij een hobbyproject bouw je voor jezelf en weet je waar de scherpe randjes zitten. Hier moest ik ervan uitgaan dat iemand anders het instelt, zonder mij, op apparatuur die ik niet ken.