Skip to main content
LOOKADEV
Free diagnosis

Answer a few questions and see your main bottleneck.

Operational Audit (48h)

Paid review with a costed plan. £600, credited on your Sprint.

Sprint (7 business days)

One priority. Agreed scope and price.

AI & automation

Connect your CRM, tools and everyday tasks.

AI agents

Agents that answer, qualify leads and report.

Websites & conversion

A clear path from first visit to first conversation.

Web development

Custom applications built with Next.js.

Agency partnerships

Software delivery under your agency's brand.

Developer tools & prompts

Prompts and tools from the development workflow.

CASESMETHODBRISTOLINSIGHTSCONTACT
|
Free diagnosis
← Back to Devlog
// Frontend

SaaS Dashboard Patterns I Keep Reusing Across Projects

25 Jun 2026Read: 2 minUpdated: 10 Oct 2026[09_saas-dashboard-patterns.log]
// KEY TAKEAWAYS

Each dashboard opens with a KPI strip: a horizontal row of 3 to 5 metrics shown as large numbers with trend indicators. Total clients: 847, +12% this month. Open deals: 23. Revenue MTD: R$45,200. The strip answers 'how are things going?' in under two seconds. CSS Grid with auto-fit and a 200px minimum column collapses it gracefully on mobile.

Each dashboard opens with a KPI strip: a horizontal row of 3 to 5 metrics shown as large numbers with trend indicators. Total clients: 847, +12% this month. Open deals: 23. Revenue MTD: R$45,200. The strip answers 'how are things going?' in under two seconds. CSS Grid with auto-fit and a 200px minimum column collapses it gracefully on mobile.

A fixed left sidebar replaces the hamburger menu. Collapsed it is 64px; expanded 240px. One toggle at the bottom switches the label. The full scope of the application stays visible at all times, like Linear, Vercel and Notion.

Tables carry sortable columns, row selection, inline status pills and a row-level action menu. Pagination uses cursor, never offset, because added or deleted rows between loads break offset pages.

An empty state needs an illustration, a one-sentence explanation and a primary button: 'No clients yet. Import your first list to get started.' Designed empty states reduce onboarding support tickets.

Skeletons show gray placeholder shapes that match the incoming layout. When the data arrives the skeleton fades out in 200 ms and the real content fades in. The page feels faster even when the API time has not changed.

Semantic tokens only: --color-success for positive, --color-warning for attention, --color-danger for critical, --color-info for neutral. Never raw color values. Theme swaps become four to six custom properties.

For color systems, I define dashboard palettes with semantic tokens: --color-success (green for positive metrics), --color-warning (amber for attention items), --color-danger (red for critical issues), --color-info (blue for neutral information). Every status pill, chart segment, and notification uses these tokens - never raw color values. This makes theming (dark mode, client white-labeling) a matter of swapping 4-6 CSS custom properties.

The Finance Planner SaaS and CETRO HUB dashboards both use these patterns. When a new client says 'I want a dashboard like that,' I don't start from scratch - I fork the component library, swap the data source, adjust the color tokens, and focus engineering time on the business logic that's actually unique to their domain.

One anti-pattern I see constantly: dashboards that show too much data on the first screen. A dashboard with 15 charts and 8 tables is not a dashboard - it's a report. A good dashboard surfaces the 3-5 metrics that drive daily decisions and pushes detailed analysis to drill-down views.

Reference: Markus Winand, pagination without OFFSET.

// TECHNICAL INSIGHT → BUSINESS REALITY

Connect this engineering principle to your company's operations

// The Operational Bottleneck

Sales teams operating in the dark, lacking visibility over daily priority missions and bogged down by slow spreadsheets.

// The Canonical Method

04. ARCHITECT & 06. BUILD: Dashboards with visible KPIs, action queues and performance checks in the actual workflow.

Documented Case:CETRO HUB — Execução Comercial →·Recommended Service:AI Systems Sprint (7D)
Schedule Systems Diagnostic View Engagement Models
← Previousn8n in Production: Visual Workflows That ScaleNext →Deploying 20+ Projects on Vercel: Production Lessons Learned
Lad Encapuzado MascotLOOKADEV LABS // REVIEWED

Devlog & Engineering by Lucas Martins, founder and lead developer at LookADev.

View all articles
LOOKADEV SYSTEMSTransforming complex business processes into intelligent, automated systems.
Free diagnosis The Systems Method
LOOKADEV

AI systems architecture, deterministic process automation, and custom software for growing businesses.

Navigation
Free diagnosisOperational Audit (48h, paid)AI Systems Sprint (7 business days)The Systems MethodCASESAll Services HubAI Operations SystemConversion Systems (<1s)AI DevelopmentCustom SoftwareBristolInsights & DevLogPrompts HubContact
Industries & solutions
Healthcare clinicsVeterinary practicesRecruitmentLegalPropertyRestaurantsConstructionSalons & wellnessProfessional servicesMarketing agenciesOmnichannel supportSaaS developmentMVP developmentNext.js developmentStartup developmentReplace spreadsheetsAutomate client reportingReduce patient no-showsAutomate candidate screeningPortfolioCommunity
Connect & Social
GitHubLinkedInX (Twitter)InstagramThreads
Legal & Privacy
Privacy & SecurityTerms of UseRefund PolicyCookie Policy
LEGAL ENTITY & BUSINESS IDENTIFICATION
Legal Entity / Sole Trader: Lucas Martins do Carmo Borges·Trade Name: LookADev·Business Type: Sole Trader·Official Email: lucas@lookadev.com·WhatsApp: +44 7356 026050·Headquarters / NAP: 9 Coventry Walk, Bristol, England (BS4 4BX), United Kingdom·Opening hours: Mon–Fri 08:00–18:00, Sat 08:00–13:00·Leave us a review·Verified Domain: lookadev.com
© 2026 LookADev · Lucas Martins do Carmo Borges · Personal data handled in line with LGPD (BR) and UK GDPR (UK) · As seen on DesignRush
SYS_PROTOCOLS:
Built in Brazil. Designed for the world.