Case study

Ik bouwde DE tool waarmee ik mijn hele bedrijf run.

'Maximized Portal' is een alles-in-één platform om de business mee te runnen, ontworpen en gebouwd voor mijn eigen studio. Het vervangt een versnipperde stack van Notion, Jira, spreadsheets en docs door één centrale bron van waarheid waar alles met elkaar in verbinding staat.

Het probleem

Een studio runnen betekent klanten, projecten, tickets, tijd, reizen, content en automatiseringen beheren. Ik deed dat allemaal in een lappendeken aan tools die niet echt goed met elkaar samenwerkten.

Tools overal, niets verbonden

Klantgegevens stonden in een spreadsheet. Taken in Jira. Notities in Notion. Tijdregistratie in alweer een andere app. Elke tool had z'n eigen login, z'n eigen data-silo en z'n eigen werkwijze.

Handmatig schakelen tussen systemen

Tijd boeken op een ticket betekende drie apps naast elkaar openen. Een klant factureren betekende data uit vijf plekken bij elkaar trekken. Niets stond met elkaar in verbinding.

Geen enkele bron van waarheid

Vroeg een klant een status-update, dan moest ik die bij elkaar puzzelen uit losse tools. Er was geen plek waar het volledige verhaal van een project samenkwam.

De visie

Het begon simpel. Ik wilde een plek waar klanten bestanden konden bekijken, feedback achterlaten en verzoeken indienen — een gedeeld portaal tussen ons. Feedback werd tickets. Tickets vroegen om sprint planning. Sprints om tijdregistratie. Tijdregistratie om facturatie. En ineens was ik iets veel groters aan het bouwen.

Portal groeide organisch vanuit echte behoeften. Elke module bestaat omdat ik 'm nodig had, niet omdat een feature-lijstje het voorschreef. Het resultaat: 12 modules die allemaal met elkaar verbonden zijn. Een ticket linkt aan een project, dat linkt aan een klant, en daar hangen geboekte tijd, reizen, media en notities aan vast. Alles ligt op één klik afstand.

Dashboard
CRM
Projecten
Kanban
Media
Notities
Tijdregistratie
Reizen
Social planner
Automatiseringen
E-mail
Gebruikers & rollen

CRM

Het CRM is de ruggengraat. Elke andere module komt hier op uit. Open je een klant, dan zie je hun projecten, tickets, geboekte tijd, reizen, media en notities — alles op één plek. Geen spreadsheets meer naast elkaar.

Screenshot van het CRM

Bedrijfsbeheer

Volg klanten met logo's, status en eigen uurtarieven. Elk bedrijf is het ankerpunt voor de rest.

Contacten & interacties

Beheer contacten per bedrijf met een primair contact als hoofdpersoon. Leg telefoontjes, meetings en mails vast met volledige historie.

Drielaags tariefstructuur

Tarieven cascaderen: klantstandaard, project-override, per-boeking-override. Flexibel zonder ingewikkeld te worden.

Offertes & bijlagen

Genereer en volg offertes per klant. Hang bestanden direct aan klantrecords voor een complete projecthistorie.

Kanban

Klantfeedback wordt een ticket. Tickets staan op het kanban-bord. Sleep ze door je workflow. Omdat tickets gekoppeld zijn aan projecten, klanten en media, weet het hele systeem wat er gebeurt zodra je een kaartje verplaatst.

Screenshot van het kanban-bord

Volledige drag-and-drop

Gebouwd met @dnd-kit voor soepele, toegankelijke drag-and-drop over statuskolommen. Kaartjes snappen netjes op hun plek met visuele feedback.

Ticket-koppelingen

Elk ticket is verbonden met een project en klant. Hang media-assets direct aan tickets voor volledige context.

Slim filteren

Filter op klant, assignee of status. Het bord past zich direct aan en toont alleen wat nu telt.

Assignee-tracking

Wijs teamleden toe met avatar-indicatoren. Zie in één oogopslag wie waarvan eigenaar is.

Automatisering

Ik draai tientallen n8n-workflows voor klanten: data-syncs, lead enrichment, content-pipelines. Het probleem: n8n vertelt je dát een workflow bestaat. Niet of 'ie ook echt werkt. Portal wel.

De automation-module trekt execution-data uit n8n en classificeert per workflow de gezondheid. Een workflow die gisteren succesvol draaide is "healthy." Een met recente fouten is "failing." Eentje die actief is maar al dagen niet heeft gedraaid? Die is "silent" — en potentieel het gevaarlijkst, want niemand merkt het tot een klant zich afvraagt waarom iets gestopt is.

Naast health-monitoring volgt Portal execution-tijdlijnen (24u- en 72u-weergaven), tokenverbruik bij LLM-workflows en matcht het workflows aan klanten via tags. De email-module (Resend-integratie) voegt delivery-tracking toe (sent, delivered, bounced, opened) en de mogelijkheid om geplande verzendingen te annuleren.

Tech stack

Gebouwd op dezelfde stack die ik gebruik voor klantwerk. Modern, typed, production-grade.

Next.js

Next.js

App Router met Server Components en Server Actions.

React

React

React 19 voor de complete interactieve UI-laag.

Supabase

Supabase

PostgreSQL-database, Auth, Storage en Row-Level Security.

Tailwind CSS

Tailwind CSS

Utility-first styling met Tailwind CSS 4.

n8n

n8n

Workflow-automatisering met health-monitoring via API.

Vercel

Vercel

Hosting en deployment met edge functions.

TypeScript (strict mode)Radix UI + shadcn/uiFramer Motion@dnd-kitResend APIRive runtimeLucide React

Uitdagingen

Het zwaarst was nooit één specifieke feature. Het was de boel simpel houden en tegelijk flexibel genoeg maken voor anderen.

Ik bouwde Portal voor mijn eigen studio-workflow. Maar zodra ik een tweede tenant ging onboarden, werd elke aanname onder druk gezet. Hun projecten lopen anders. Hun teamstructuur is anders. Hun permissies moeten anders zijn.

De uitdaging was de tool opinionated houden (snel in gebruik, geen onnodige configuratie) en tegelijk genoeg ruimte geven aan anderen om 'm naar hun hand te zetten. Die spanning vormde elke ontwerpkeuze: het permissiesysteem, de tariefcascade, de modulestructuur. Sterke defaults, maar op elk niveau te overschrijven.

Scope was de andere constante strijd. Elke module die ik toevoegde verbond zich met al het andere, en daarmee was elke uitbreiding complexer dan ze leek. Een "simpele" trips-feature had klantkoppeling, projectkoppeling, ticketkoppeling, tariefberekeningen, intelligente autocomplete en permission-checks nodig. Twaalf keer over.

Resultaten

Portal is live, in dagelijks gebruik en groeit. Wat begon als feedbacktool voor klanten is nu het besturingssysteem van mijn studio.

12 geïntegreerde modules

CRM, projecten, kanban, media, notities, tijdregistratie, reizen, social planner, automatiseringen, e-mail, gebruikers en instellingen — allemaal verbonden.

Multi-tenant in productie

Draait met echte tenants. Volledige data-isolatie via RLS. Per-gebruiker permissies in elke module.

Actief dagelijks gebruik

Dit is geen demo of portfolio-stuk. Het is de tool waarmee ik mijn studio dagelijks run, voor echt werk.

Solo end-to-end gebouwd

Design, frontend, backend, database-schema, RLS-policies, API-integraties, deployment — allemaal door één persoon.