Skip to content
GenGraphic

Product · 2 min read

What a production-ready internal dashboard needs

Roles, permissions, states, audit logs, search, error handling, and operational UX.

Internal dashboards are often built quickly, treated as low-stakes because customers never see them, and then quietly become critical to daily operations. By the time that happens, gaps that were acceptable in a first version become real operational risk. A short list of requirements separates a prototype from something a team can depend on.

Roles and permissions, not just a login

A single login screen is not access control. A production-ready internal tool needs distinct roles — viewer, editor, administrator, at minimum — with permissions enforced on the server, not just hidden in the interface. Anything else means a determined or careless user can reach data or actions they should not have.

Explicit states, including the boring ones

Every view needs a defined loading state, an empty state, and an error state — not just a blank screen while something fails silently. Teams relying on a dashboard for daily decisions need to trust what they see; an ambiguous blank screen erodes that trust faster than an honest error message.

Audit logs for anything that changes data

Any action that changes a record — approving a request, editing a value, deleting an entry — should be logged with who did it and when. This is not bureaucracy; it is what makes it possible to answer "why did this change" six months later, without relying on someone's memory.

Search and filtering that match how people actually work

A dashboard with hundreds or thousands of rows and no meaningful search or filtering becomes unusable at exactly the point it matters most — when someone needs to find one specific record quickly. Filters should match the questions people actually ask ("show me everything pending from this client this week"), not just the fields that happen to exist in the database.

Sit with the people who will use the dashboard daily before finalising filters and views. The fields that seem obvious to the engineering team are rarely the ones the operations team actually searches by.

Error handling that explains what to do next

A failed action should say what happened and, where possible, what to do about it — not just "an error occurred." For internal tools especially, a clear error message saves a support request to the engineering team.

Table of expected coverage

ConcernMinimum bar
Access controlServer-enforced roles, not just UI hiding
Data statesLoading, empty, and error states for every view
Change trackingAudit log for create/update/delete actions
FindabilitySearch and filters matching real user questions
Failure messagingActionable error messages, not generic failures

Meeting this bar before a dashboard becomes business-critical is far cheaper than retrofitting it once dozens of people depend on the tool every day.

GenGraphic Team

Engineering

ShareinX

We use privacy-friendly analytics to understand how the site is used. No non-essential tracking runs before you accept. Read our cookie policy.