Backend:
- Adicionar métodos de contagem/agregação aos repositórios (UserRepository, OrganizationRepository, TaskRepository)
- Implementar nova use case PublicStatsUseCase que retorna estatísticas públicas (usuários, organizações, tarefas completas, horas registradas)
- Criar novo controller público GET /public/stats sem autenticação
- Configurar CDI factory PublicStatsUseCaseConfig
Frontend:
- Criar nova landing page pública (LandingPage.tsx) com seções:
* Hero com CTAs (Começar grátis / Ver demo)
* 4 cards de funcionalidades principais (dashboard, produtividade, rastreamento, Kanban)
* Seção "Como funciona" com 3 passos
* Showcase visual do dashboard com leaderboard fake
* Estatísticas reais da plataforma (consumidas do backend)
* CTA final e footer
- Criar serviço publicStatsService para consumir o endpoint público
- Adicionar rota /landing na router
- Design alinhado com o sistema de cores e tipografia existente (Plus Jakarta Sans, Tailwind v4)
Stats reais são animadas ao fazer scroll (Framer Motion counter).
Com o domínio task.beetech.dev servindo o frontend na raiz, o base
'/frontend/' gerava referencias quebradas nos assets. Muda para '/'.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
O modal de onboarding era disparado tanto na LoginPage quanto no AppShell
com navegação conflitante, fazendo ele fechar e reabrir ao escolher uma
opção. Agora o login sem org redireciona para /organizations, o AppShell
redireciona usuários sem org para lá, e o modal é exibido uma única vez
pela OrganizationsPage.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Adiciona conceito de Categoria por organização (nome, cor e ícone lucide),
com CRUD restrito a OWNER/ADMIN. Tasks ganham categoria opcional, filtros
multiselect de status e categoria nas listagens, badges nos cards, e
gráficos de pizza de tempo por categoria nos dashboards pessoal, da
organização e no modal de detalhes do membro.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- Substitui LocalDateTime.now() por Instant.now() no issuedAt — a string
produzida por LocalDateTime não contém timezone e era interpretada como
hora local pelo browser, fazendo o frontend calcular expiresAt errado e
nunca deslogar o usuário quando o token vencia.
- Cria TokenConstants com ACCESS_TOKEN_EXPIRY_SECONDS e
REFRESH_TOKEN_EXPIRY_SECONDS, eliminando os valores hardcoded em
LoginUseCase e RefreshTokenUseCase.
- Remove imports não utilizados em AuthController.
closes#24
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Backend: adiciona ListMyTasksInput, ListMyTasksRequest (@BeanParam) com
parâmetros text, projectId e status; novo método findTasksByUserFiltered
no repositório com query dinâmica via Panache; mapper atualizado;
CLAUDE.md documenta regra de DTO Request para 3+ parâmetros.
Frontend: componente reutilizável TaskFilterBar (texto, projeto, status)
integrado em TaskListPage e TaskBoardPage; getMyTasks() aceita filtros
repassados como query params ao backend.
closes#26
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Propagava o campo history do CreateTaskRequest até o use case e persistência.
O mapeamento em TaskControllerMapper ignorava o history; CreateTaskInput não
tinha o campo; e CreateTaskUseCase não aplicava os itens à entidade antes
de salvar.
Closes#22
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Remove leading slash from smallrye-health.root-path so the health
endpoint resolves to /backend/q/status (relative to non-app root)
instead of the unreachable absolute path /status
- Clean up docker-compose traefik labels (remove stale comments)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Restructure the AppShell navbar for better UX grouping: rename
"Organizações" to "Equipe", consolidate Org Dashboard and admin
items inside the Equipe dropdown, add a persistent "+ Nova Tarefa"
CTA button, and replace the isolated logout button with an avatar
dropdown showing user name and email. Add "Buscar Organização"
to the Equipe dropdown for all roles. Mobile nav simplified to
Dashboard · Tarefas · + · Equipe.
Per-page fixes: remove non-functional chevron and dead links from
ProjectsPage; replace the PDF export button in DashboardPage with
a working "Copiar Relatório" clipboard button; remove dead info
links from OrganizationsPage; remove the broken support link from
LoginPage; add Lista/Quadro view toggle to TaskListPage header.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>