MODULO 3.3

📊 Dashboard e Interface Principal

O design do dashboard define se o usuario fica ou vai embora. Layout para apps de IA, paradigmas de interface, componentes essenciais, navegacao, responsividade e construcao pratica.

6
Topicos
50 min
Duracao
Intermediario
Nivel
Pratica
Tipo
1

🖥️ Layout Design para Apps com IA

Apps de IA tem um desafio de layout que apps tradicionais nao tem: espaco para conversa. A interacao primaria e texto, e texto precisa de area generosa para ser lido com conforto. Sidebar + area principal + input bar e o padrao que domina em 2026 por uma razao.

🎯 Conceito Principal

O layout padrao para SaaS com IA consiste em tres zonas: sidebar de navegacao (historico, configuracoes, agentes), area principal (onde a conversa/conteudo acontece) e painel de chat/input (onde o usuario interage). Esse modelo funciona porque mapeia diretamente o fluxo mental do usuario: escolher contexto > ver conteudo > agir.

  • Sidebar (240-280px): Fixa no desktop, drawer no mobile. Contem historico de conversas, botao "Nova Conversa", navegacao para settings e billing
  • Area Principal (flex-1): Ocupa todo o espaco restante. Scroll vertical para mensagens. Max-width de 768px para legibilidade (texto longo em tela wide e cansativo)
  • Input Bar (fixo no bottom): Textarea expansivel + botao de upload + botao de envio. Sticky no bottom da viewport para estar sempre acessivel
  • Responsive: Em telas menores que 768px, sidebar vira overlay/drawer. Input bar vira full-width. Area principal ocupa 100vw

🏗️ Wireframe do Layout

┌─────────────────────────────────────────────────┐
Logo Nav Items Theme Avatar
├──────────┬──────────────────────────────────────┤
+ Nova
Conversa Area Principal (Chat/Content)

Conv 1 User: Como funciona X?
Conv 2 AI: X funciona assim...
Conv 3
User: E sobre Y?
Settings AI: Y e relacionado a...
Billing
┌──────────────────────────────────┐
│ 📎 Digite sua mensagem... ➤ │
└──────────────────────────────────┘
└──────────┴──────────────────────────────────────┘

💻 Estrutura Base do Layout

// app/dashboard/layout.tsx
export default function
DashboardLayout({ children }) {
return (
<div className="flex h-screen">
{/* Sidebar - hidden on mobile */}
<aside className="hidden md:flex w-64 flex-col
bg-gray-900 border-r border-gray-800">
<SidebarHeader />
<ConversationList />
<SidebarFooter />
</aside>
{/* Main content area */}
<main className="flex-1 flex flex-col overflow-hidden">
<TopBar />
<div className="flex-1 overflow-y-auto">
{children}
</div>
<ChatInput />
</main>
</div>
)
}

💡 Dica Pratica

Copie o layout do ChatGPT ou Claude como base. Serio. Sidebar esquerda com historico + area central de conversa + input bar na base. Usuarios ja sabem usar esse padrao. Nao invente um layout novo. Inove no conteudo e nas features, nao na disposicao dos elementos.

2

💬 Conversation vs Transaction-Centered

Nem todo SaaS com IA precisa ser um chatbot. Existem dois paradigmas dominantes de interface e a escolha errada pode matar a experiencia do usuario. Entender quando usar cada um e decisao de arquitetura, nao de design.

🎯 Conceito Principal

O conversation-centered (ChatGPT, Claude, Gemini) coloca a conversa como elemento central da interface. O usuario interage primariamente via texto. Ja o transaction-centered (Notion AI, Canva AI, Jasper) integra a IA dentro de workflows existentes. A IA e uma feature, nao o produto inteiro.

Existe tambem o modelo hibrido (Cursor, v0.dev, Replit Agent) que combina os dois: um workspace visual onde a IA atua como co-piloto. O usuario edita diretamente E conversa com a IA no mesmo ambiente.

💬 Conversation-Centered

A conversa e o produto

  • Exemplos: ChatGPT, Claude, Perplexity
  • Quando usar: O valor principal vem da interacao textual com a IA
  • Layout: Chat area centralizada, historico na sidebar
  • Vantagem: Simples de construir, familiar para usuarios

📋 Transaction-Centered

A IA potencializa workflows

  • Exemplos: Notion AI, Canva AI, Jasper
  • Quando usar: A IA e uma feature dentro de um produto maior
  • Layout: Workspace no centro, IA em sidebar ou popup
  • Vantagem: IA contextualizada no que o usuario esta fazendo

📊 Dados de Mercado

  • 72% dos SaaS com IA lancados em 2025-2026 usam modelo conversation-centered como base
  • Modelos hibridos (Cursor, v0) mostram 3x mais retencao que chatbots puros em tarefas de produtividade
  • Para MVP: Conversation-centered e 5x mais rapido de construir que hibrido. Comece simples, complexifique depois

💡 Dica Pratica

Se voce esta construindo um SaaS com IA pela primeira vez, va de conversation-centered. E mais simples de construir, usuarios ja sabem usar e voce pode evoluir para hibrido depois. O ChatGPT provou que o modelo funciona. Nao reinvente antes de validar.

3

🧱 Componentes Essenciais do Dashboard

Um dashboard funcional nao e uma pagina em branco com um input de texto. Ele precisa de componentes que informam, guiam e motivam o usuario. Stats cards, lista de conversas recentes, acoes rapidas e seletor de agente sao o minimo para um produto que parece profissional.

🎯 Conceito Principal

Os componentes essenciais de um dashboard de SaaS com IA seguem uma hierarquia: status/metricas no topo (quantas conversas, tokens usados, plano atual), acoes rapidas no meio (nova conversa, templates, upload) e conteudo recente embaixo (ultimas conversas, resultados salvos).

  • Stats Cards: 3-4 cards no topo mostrando metricas-chave. Conversas hoje, tokens usados, tempo economizado. Dados que justificam o pagamento
  • Quick Actions: Botoes grandes para acoes frequentes. "Nova Conversa", "Upload Documento", "Usar Template". Reduzem cliques para chegar ao valor
  • Recent Conversations: Lista das ultimas 5-10 conversas com titulo, data e preview. Clicar abre a conversa completa
  • Agent Selector: Se o SaaS tem multiplos agentes/modos (escrita, analise, codigo), dropdown ou tabs para alternar

💻 Stats Card com Tailwind + shadcn/ui

import
{ Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'
import
{ MessageSquare, Zap, Clock, TrendingUp } from 'lucide-react'
const
stats = [
{ title: 'Conversas Hoje', value: '12', icon: MessageSquare, change: '+3' },
{ title: 'Tokens Usados', value: '45.2k', icon: Zap, change: '60%' },
{ title: 'Tempo Economizado', value: '2.5h', icon: Clock, change: '+45min' },
{ title: 'Satisfacao', value: '94%', icon: TrendingUp, change: '+2%' },
]
function
StatsGrid() {
return (
<div className="grid grid-cols-2 lg:grid-cols-4 gap-4">
{stats.map((stat) => (
<Card key={stat.title}>
<CardHeader className="flex flex-row items-center
justify-between pb-2">
<CardTitle className="text-sm font-medium
text-muted-foreground">
{stat.title}
</CardTitle>
<stat.icon className="h-4 w-4 text-purple-400" />
</CardHeader>
<CardContent>
<div className="text-2xl font-bold">{stat.value}</div>
<p className="text-xs text-emerald-400">{stat.change}</p>
</CardContent>
</Card>
))}
</div>
)
}

✓ O que FAZER

  • Mostrar metricas que justificam o valor do produto
  • Usar shadcn/ui como base (consistente, acessivel, customizavel)
  • Colocar a acao principal (nova conversa) em destaque

✗ O que NAO fazer

  • Dashboard vazio sem metricas nem contexto
  • Criar componentes do zero quando existem libraries
  • Sobrecarregar com 20 cards (3-4 stats sao suficientes)
4

🧭 Navegacao e Information Architecture

O usuario abriu o dashboard. Agora precisa encontrar o que procura em menos de 3 segundos. Information Architecture (IA) e a arte de organizar features de forma que o usuario descubra naturalmente, sem precisar de manual. Sidebar, breadcrumbs e command palette sao as ferramentas.

🎯 Conceito Principal

A navegacao de um SaaS opera em tres niveis: primaria (sidebar - seccoes principais como Chat, Settings, Billing), secundaria (breadcrumbs + tabs dentro de cada seccao) e global (Command Palette Cmd+K que busca qualquer coisa de qualquer lugar).

  • Sidebar Items: Maximo 7 items na navegacao primaria (regra de Miller). Agrupe items relacionados com separadores visuais. Icons + labels
  • Breadcrumbs: Mostram onde o usuario esta na hierarquia. Dashboard > Settings > API Keys. Permitem voltar rapidamente a qualquer nivel
  • Command Palette (Cmd+K): Busca universal. Digita o que quer e encontra conversas, settings, acoes. Linear, Vercel, Notion e Slack usam. Power users adoram
  • Feature Discovery: Tooltips em features novas, badges "Novo" em items de menu, empty states com call-to-action educativo

💻 Sidebar com Navegacao Organizada

const
sidebarItems = [
// Acao principal
{ icon: Plus, label: 'Nova Conversa', href: '/chat/new', primary: true },
// Navegacao principal
{ icon: MessageSquare, label: 'Conversas', href: '/chat' },
{ icon: FileText, label: 'Documentos', href: '/documents' },
{ icon: Bot, label: 'Agentes', href: '/agents', badge: 'Novo' },
// Separador
{ type: 'separator' },
// Configuracoes
{ icon: Settings, label: 'Configuracoes', href: '/settings' },
{ icon: CreditCard, label: 'Plano', href: '/billing' },
]
// Cmd+K command palette (usar cmdk library)
npm install cmdk
import
{ Command } from 'cmdk'
<Command>
<Command.Input placeholder="Buscar conversas, settings..." />
<Command.List>
<Command.Item>Nova Conversa</Command.Item>
<Command.Item>Configuracoes</Command.Item>
<Command.Item>Trocar de Agente</Command.Item>
</Command.List>
</Command>

💡 Dica Pratica

Implemente Cmd+K desde o MVP. Parece avancado mas a library cmdk do Pacocoursey faz em 20 linhas. Power users (que pagam mais) usam atalhos. E um diferencial competitivo barato de implementar.

5

📱 Responsividade e Mobile

67% do trafego de SaaS vem de desktop, mas os outros 33% nao podem ter uma experiencia quebrada. Mobile-first nao significa construir para mobile primeiro. Significa garantir que a experiencia mobile e pensada, nao improvisada. Sidebar colapsavel, bottom nav e touch-friendly chat sao essenciais.

🎯 Conceito Principal

A adaptacao mobile de um dashboard de IA envolve tres transformacoes principais: sidebar vira drawer/sheet (abre por cima do conteudo, fecha com swipe), navegacao primaria migra para bottom bar (polegar alcanca facilmente) e input bar precisa coexistir com teclado virtual (viewport resize).

  • Collapsible Sidebar: No desktop, toggle entre 64px (icons only) e 256px (full). No mobile, Sheet/Drawer overlay. Botao hamburger no header
  • Bottom Navigation: 4-5 items max (Chat, History, Agents, Settings). Tab bar fixa no bottom do mobile. Padrao nativo iOS/Android
  • Touch-Friendly Chat: Botoes com min 44x44px (Apple HIG). Swipe para deletar mensagem. Long press para copiar. Input area com min 48px height
  • PWA: Progressive Web App permite instalar o SaaS como app no celular. Service worker para offline, manifest.json para icon na home screen

💻 Sidebar Responsiva com Tailwind

// Sidebar que colapsa no mobile
function
Sidebar({ isOpen, onClose }) {
return (
<>
{/* Mobile overlay */}
{isOpen && (
<div
className="fixed inset-0 bg-black/50 z-40 md:hidden"
onClick={onClose}
/>
)}
{/* Sidebar */}
<aside className={`
fixed md:static inset-y-0 left-0 z-50
w-64 bg-gray-900 border-r border-gray-800
transform transition-transform duration-200
${isOpen ? 'translate-x-0' : '-translate-x-full'}
md:translate-x-0
`}>
{/* sidebar content */}
</aside>
</>
)
}
// Bottom navigation (mobile only)
<nav className="fixed bottom-0 left-0 right-0
bg-gray-900 border-t border-gray-800
flex justify-around py-2 md:hidden z-40">
<NavItem icon={MessageSquare} label="Chat" />
<NavItem icon={History} label="Historico" />
<NavItem icon={Bot} label="Agentes" />
<NavItem icon={Settings} label="Config" />
</nav>

📊 Breakpoints Essenciais

sm: 640px
Mobile landscape. Stack to row layouts
md: 768px
Tablet. Sidebar aparece. Bottom nav some
lg: 1024px
Desktop. Full sidebar. Multi-column layouts

💡 Dica Pratica

Teste no mobile real, nao so no DevTools. O Chrome DevTools mente sobre teclado virtual, safe areas e gestos de swipe. Conecte seu celular via USB e use remote debugging. Ou use BrowserStack free tier. Erros de mobile so aparecem no mobile real.

6

🛠️ Exercicio: Dashboard Funcional

Hora de construir. Neste exercicio voce vai criar um dashboard completo com sidebar de navegacao, stats cards, lista de conversas recentes e design responsivo. O resultado e um painel profissional que da a impressao certa quando o usuario loga.

🛠️

Exercicio: Construir Dashboard Completo

Tempo estimado: 35-50 minutos

1

Layout base com Sidebar

Criar o layout principal: sidebar fixa de 256px no desktop, drawer no mobile. Area principal com flex-1. Header com logo e avatar:

// Estrutura de pastas:
app/dashboard/layout.tsx ← Layout wrapper
app/dashboard/page.tsx ← Dashboard home
components/sidebar.tsx ← Sidebar component
components/top-bar.tsx ← Top navigation
components/mobile-nav.tsx ← Bottom nav mobile
2

Stats Cards no topo

Grid de 4 cards: Conversas Hoje, Tokens Usados, Tempo Economizado, Plano Atual. Grid-cols-2 no mobile, grid-cols-4 no desktop. Usar shadcn/ui Card component.

3

Lista de Conversas Recentes

Exibir as ultimas 5 conversas com titulo (gerado pela IA), data relativa e preview da ultima mensagem. Clicar navega para a conversa:

<div className="space-y-2">
{conversations.map(conv => (
<Link href={`/chat/${conv.id}`} key={conv.id}>
<div className="p-3 rounded-lg hover:bg-gray-800
cursor-pointer transition">
<h3 className="font-medium truncate">{conv.title}</h3>
<p className="text-sm text-gray-400 truncate">
{conv.lastMessage}
</p>
<span className="text-xs text-gray-500">
{formatRelative(conv.updatedAt)}
</span>
</div>
</Link>
))}
</div>
4

Quick Actions + Agent Selector

Secao de acoes rapidas: "Nova Conversa", "Upload Documento", "Usar Template". Dropdown ou tabs para selecionar agente/modo de IA (Escrita, Analise, Codigo).

5

Responsividade completa

Testar em 3 breakpoints: mobile (375px), tablet (768px) e desktop (1280px). Sidebar colapsa em mobile. Bottom nav aparece. Stats grid adapta de 4 para 2 colunas. Input bar full-width.

Criterios de Sucesso

Sidebar com navegacao funcional
Stats cards mostrando dados
Lista de conversas recentes clicavel
Sidebar colapsa no mobile (drawer)
Bottom nav visivel no mobile
Layout funciona em 375px, 768px e 1280px

🌟 Bonus

Adicione Command Palette (Cmd+K) com a library cmdk e dark/light mode toggle. Implemente animacoes suaves na sidebar (framer-motion) e skeleton loading nos stats cards enquanto os dados carregam.

📋 Resumo do Modulo

Layout: sidebar + area central + input bar - Padrao dominante em apps de IA. Copie antes de inovar. Max-width 768px para legibilidade.
Conversation-centered para MVP - 5x mais rapido de construir que hibrido. Evolua para transaction-centered ou hibrido depois de validar.
Stats + Quick Actions + Recent Conversations - Os tres componentes minimos de um dashboard profissional. shadcn/ui como base.
Navegacao em 3 niveis - Sidebar (primaria) + Breadcrumbs (secundaria) + Cmd+K (global). Max 7 items na sidebar. cmdk para command palette.
Mobile: drawer + bottom nav + touch-friendly - Sidebar vira overlay. Bottom nav com 4-5 items. Botoes min 44x44px. Teste no dispositivo real.

Proximo Modulo:

Modulo 3.4 - System Prompts e Fluxo da Aplicacao. O DNA do produto: como configurar system prompts, temperature, context window e pipeline de processamento.