Sistema de dashboard whitelabel completo e pronto para produção, com autenticação, tema preto e branco, e design premium.
Sistema completo com:
- ✅ Página de Login
- ✅ Dashboard com Sidebar e Header
- ✅ Páginas de Usuários e Produtos
- ✅ Sistema de Autenticação (localStorage)
- ✅ Tema Claro/Escuro
- ✅ Design Premium Preto e Branco
# Instalar dependências
npm install
# Rodar em desenvolvimento
npm run dev
# Acessar
http://localhost:3000Credenciais de teste:
- Email:
admin@example.com/ Senha:admin123 - Email:
user@example.com/ Senha:user123
- Tema Whitelabel: Preto e branco premium, sem cores adicionais
- shadcn/ui: Componentes modernos e acessíveis
- Dark Mode: Tema claro/escuro integrado
- Fonte Premium: Inter (Google Fonts)
- Totalmente Responsivo: Mobile, tablet e desktop
- Sistema de login completo
- Armazenamento com localStorage
- Proteção automática de rotas
- Hook
useAuthcustomizado - Pronto para integração com API
- Dashboard com estatísticas e KPIs
- Sidebar com navegação
- Header com menu de usuário
- Páginas de exemplo (Usuários, Produtos)
- Dados mock para testes sem API
- TypeScript em 100% do código
- Next.js 15 - App Router, React Server Components
- React 19 - Versão mais recente
- TypeScript 5.6 - Type safety completo
- Tailwind CSS 3.4 - Estilização utility-first
- shadcn/ui - Componentes UI premium
- Lucide React - Ícones modernos
- next-themes - Gerenciamento de tema
src/
├── app/
│ ├── dashboard/ # Área autenticada
│ │ ├── layout.tsx # Layout com sidebar/header
│ │ ├── page.tsx # Dashboard principal
│ │ ├── users/ # Página de usuários
│ │ └── products/ # Página de produtos
│ ├── login/ # Página de login
│ ├── layout.tsx # Layout raiz (fonte, metadata)
│ └── page.tsx # Redirect para login/dashboard
│
├── components/
│ ├── ui/ # Componentes shadcn/ui
│ │ ├── button.tsx
│ │ ├── input.tsx
│ │ ├── card.tsx
│ │ ├── avatar.tsx
│ │ └── ...
│ └── layout/ # Componentes de layout
│ ├── sidebar.tsx
│ └── header.tsx
│
├── hooks/
│ └── useAuth.ts # Hook de autenticação
│
├── lib/
│ └── utils.ts # Utilitários (cn, etc)
│
├── mock-data/
│ ├── users.ts # Usuários mock
│ └── dashboard.ts # Dados mock do dashboard
│
└── types/
└── index.ts # Tipos TypeScript
git clone <seu-repositorio>
cd ModeloDashboard
npm installcp .env.example .env.localEdite .env.local:
NEXT_PUBLIC_API_URL=https://sua-api.comnpm run devnpm run build
npm startO projeto vem com dados mock para funcionar sem API. Para conectar sua API:
Edite src/hooks/useAuth.ts:
// Substitua:
const data = await mockLogin(credentials);
// Por:
const response = await fetch(`${process.env.NEXT_PUBLIC_API_URL}/auth/login`, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify(credentials),
});
const data = await response.json();Formato esperado da API:
{
"user": {
"id": "1",
"name": "Nome do Usuário",
"email": "email@example.com",
"avatar": "url-avatar",
"role": "admin"
},
"token": "jwt-token"
}Substitua as importações em src/app/dashboard/page.tsx:
// Substitua:
import { mockDashboardStats } from "@/mock-data/dashboard";
// Por chamada à API:
const stats = await fetchStats();As cores estão em src/app/globals.css:
:root {
--background: 0 0% 100%; /* Branco */
--foreground: 0 0% 3.9%; /* Preto */
--primary: 0 0% 9%; /* Preto primário */
/* ... outras variáveis ... */
}Sidebar (src/components/layout/sidebar.tsx):
<h2 className="text-2xl font-bold">Seu Logo</h2>Login (src/app/login/page.tsx):
<h1 className="text-4xl font-bold mb-2">Sua Marca</h1>Edite src/mock-data/dashboard.ts:
export const mockMenuItems: MenuItem[] = [
{
id: "1",
label: "Dashboard",
icon: "layout-dashboard",
href: "/dashboard",
},
// Adicione mais itens...
];- Crie
src/app/dashboard/sua-pagina/page.tsx - Adicione ao menu em
src/mock-data/dashboard.ts - Use os componentes prontos de
src/components/ui
<Button>Clique aqui</Button>
<Button variant="outline">Outline</Button>
<Button variant="ghost" size="sm">Pequeno</Button><Label htmlFor="email">Email</Label>
<Input id="email" type="email" placeholder="email@example.com" /><Card>
<CardHeader>
<CardTitle>Título</CardTitle>
</CardHeader>
<CardContent>Conteúdo</CardContent>
</Card><Avatar>
<AvatarImage src="/avatar.jpg" />
<AvatarFallback>AB</AvatarFallback>
</Avatar>Para guia completo de uso, consulte:
- WHITELABEL_GUIDE.md - Guia completo de uso e customização
npm i -g vercel
vercelOu conecte seu repositório no Vercel Dashboard.
- ✅ Rotas protegidas automaticamente
- ✅ Token armazenado em localStorage
- ✅ Validação de autenticação em cada acesso
⚠️ Produção: Use httpOnly cookies e refresh tokens
npm run dev # Desenvolvimento (localhost:3000)
npm run build # Build de produção
npm start # Servidor de produção
npm run lint # Linting com ESLint- Fork o projeto
- Crie sua branch (
git checkout -b feature/MinhaFeature) - Commit suas mudanças (
git commit -m 'Add: Nova feature') - Push para a branch (
git push origin feature/MinhaFeature) - Abra um Pull Request
MIT License - use livremente em projetos comerciais.
- Next.js - Framework React
- shadcn/ui - Componentes UI
- Tailwind CSS - CSS Framework
- Lucide - Ícones
- Radix UI - Primitivos UI
- TypeScript - Tipagem estática
Este template é perfeito para:
- 📊 Dashboards Analytics
- 🏢 Painéis Administrativos
- 📈 Aplicações SaaS
- 💼 Sistemas Internos
- 📱 Plataformas de Gestão
- 🐛 Issues
- 💬 Discussões
Desenvolvido com Next.js 15, React 19, TypeScript, Tailwind CSS e shadcn/ui
Se este projeto foi útil, dê uma ⭐!