Implement the following plan:
Implementar frontend React completo com:
- Tema dark (Catppuccin Mocha) e light (Catppuccin Latte)
- Autenticação (Login/Register)
- Layout responsivo com Navbar e Sidebar
- Dashboard, User Management (admin) e Profile
- Atualizar CLAUDE.md e PROJECT.md ao final
Substituir cores neutras por paletas Catppuccin:
Latte (Light - :root):
- background: #eff1f5, foreground: #4c4f69
- primary: #1e66f5 (Blue), accent: #8839ef (Mauve)
- destructive: #d20f39 (Red), muted: #bcc0cc (Surface1)
Mocha (Dark - .dark):
- background: #1e1e2e, foreground: #cdd6f4
- primary: #89b4fa (Blue), accent: #cba6f7 (Mauve)
- destructive: #f38ba8 (Red), muted: #45475a (Surface1)
Store Zustand com persist para tema (light/dark/system)
Hook que aplica classe .dark no <html> baseado no tema
cd apps/frontend
npx shadcn@latest add button input label card alert
npx shadcn@latest add dropdown-menu avatar separator sheet
npx shadcn@latest add table badge skeleton dialog
npx shadcn@latest add sonnerDependências adicionais (para forms):
npm install react-hook-form @hookform/resolvers zod| Arquivo | Descrição |
|---|---|
ThemeToggle.tsx |
Dropdown com opções Light/Dark/System |
UserMenu.tsx |
Avatar + dropdown com Profile/Logout |
Sidebar.tsx |
Nav lateral com links (Dashboard, Users, Files, Profile) |
Navbar.tsx |
Header com logo, ThemeToggle e UserMenu |
MainLayout.tsx |
Wrapper com Navbar + Sidebar + content area |
auth/
├── types.ts # Zod schemas (loginSchema, registerSchema)
└── pages/
├── LoginPage.tsx
└── RegisterPage.tsx
- Form com email/password
- Validação com react-hook-form + zod
- Integração com
authApi.login() - Redirect para
/após sucesso
- Form com name/email/password/confirmPassword
- Validação com zod
- Integração com
authApi.register() - Redirect para
/loginapós sucesso
- Welcome card com nome do usuário
- Info de role (admin/user)
- Cards de resumo (placeholder para métricas futuras)
Store para lista de usuários com actions: setUsers, addUser, updateUser, removeUser
users/
├── pages/
│ └── UsersPage.tsx # Tabela com lista de usuários
└── components/
├── UserDialog.tsx # Modal criar/editar usuário
└── DeleteUserDialog.tsx # Confirmação de exclusão
- Tabela com colunas: Name, Email, Role, Actions
- Botão "Add User" (abre UserDialog)
- Actions: Edit (abre UserDialog), Delete (abre DeleteUserDialog)
- Integração com
usersApi.list(),usersApi.create(), etc.
- Card com dados do usuário logado
- Nome, email, role (badge), data de criação
- (Opcional) Botão para editar perfil
- Importar todos os novos componentes
- Configurar rotas com
MainLayout - Adicionar
AdminRoutepara/users - Inicializar tema com
useTheme()
- Adicionar seção Frontend Implementado
- Listar componentes criados
- Comandos para rodar frontend
- Atualizar estado do frontend
- Marcar tarefas como concluídas
- Documentar estrutura de pastas final
src/
├── components/
│ ├── ui/ # shadcn/ui (button, card, table, etc.)
│ └── layout/
│ ├── ThemeToggle.tsx
│ ├── UserMenu.tsx
│ ├── Sidebar.tsx
│ ├── Navbar.tsx
│ └── MainLayout.tsx
├── features/
│ ├── auth/
│ │ ├── types.ts
│ │ └── pages/
│ │ ├── LoginPage.tsx
│ │ └── RegisterPage.tsx
│ ├── dashboard/
│ │ └── pages/
│ │ └── DashboardPage.tsx
│ ├── users/
│ │ ├── pages/
│ │ │ └── UsersPage.tsx
│ │ └── components/
│ │ ├── UserDialog.tsx
│ │ └── DeleteUserDialog.tsx
│ └── profile/
│ └── pages/
│ └── ProfilePage.tsx
├── hooks/
│ └── use-theme.ts
├── stores/
│ ├── auth.ts # (existente)
│ ├── theme.ts
│ └── users.ts
├── services/
│ └── api.ts # (existente)
├── lib/
│ └── utils.ts # (existente)
├── App.tsx
├── main.tsx
└── index.css # Catppuccin colors
npm run dev- Verificar que app inicia sem erros- Testar toggle de tema (Light/Dark/System)
- Testar fluxo de Login/Register
- Verificar proteção de rotas (redirect para /login se não autenticado)
- Testar CRUD de usuários (como admin)
- Verificar responsividade (sidebar mobile via Sheet)
npm run build- Verificar que build passa sem erros
feat(theme): add Catppuccin Mocha/Latte theme with togglefeat(layout): add Navbar, Sidebar, and MainLayout componentsfeat(auth-pages): add Login and Register pages with validationfeat(dashboard): add Dashboard pagefeat(users): add User management with CRUD operationsfeat(profile): add Profile pagedocs: update CLAUDE.md and PROJECT.md with frontend status
If you need specific details from before exiting plan mode (like exact code snippets, error messages, or content you generated), read the full transcript at: /home/shotler/.claude/projects/-home-shotler-github-python-study-python-hexagonal-study/d7f7205c-1eb0-4c91-9b86-4ac1dc7d3cce.jsonl