Commit graph

98 commits

Author SHA1 Message Date
Gabriel Santana de Menezes
e37cf06634 redirect 2026-05-18 09:57:58 -04:00
Gabriel Santana de Menezes
ae0d536ff7 Add optional assignee to task form 2026-05-17 21:18:07 -04:00
Gabriel Santana de Menezes
7c3ba32b3f increase status fetch 2026-05-17 21:00:13 -04:00
Gabriel Santana de Menezes
8cb1831cb4 Fix public stats parsing on landing page 2026-05-17 20:58:26 -04:00
Gabriel Santana de Menezes
7f05ebdf61 Add assignee filtering to task listings 2026-05-17 20:55:29 -04:00
Gabriel Santana de Menezes
ea7ffaaffd Add multi-select task filters for projects and statuses 2026-05-17 19:22:44 -04:00
Gabriel Santana de Menezes
2d14ae480d feat: criar landing page pública com endpoint de estatísticas
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).
2026-05-16 17:14:42 -04:00
Gabriel Santana de Menezes
66782dda0c bora cors ajuda nois 2026-05-16 16:47:44 -04:00
Gabriel Santana de Menezes
fb6f22ed7a no more cors 2026-05-16 16:24:07 -04:00
Gabriel Santana de Menezes
de8d813b2c cors fixs 2026-05-16 11:41:48 -04:00
Gabriel Santana de Menezes
322cb2930a fix: corrigir base path do Vite para subdomínio dedicado
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>
2026-05-16 11:24:46 -04:00
Gabriel Santana de Menezes
682280fefd chore: configurar domínios customizados task.beetech.dev e api.task.beetech.dev
- Frontend: remover basename '/frontend' do router
- Frontend: criar .env.production com VITE_API_URL
- Backend: remover root-path=/backend, atualizar CORS origins
- Docker Compose: atualizar Traefik labels para Host-based routing

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-16 11:14:07 -04:00
Gabriel Santana de Menezes
5c53379568 fix: centralizar OnboardingModal em /organizations e evitar reabertura (#15)
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>
2026-05-16 10:58:21 -04:00
Gabriel Santana de Menezes
2fdb375462 feat: adicionar categorias para tasks (#23)
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>
2026-05-15 16:18:41 -04:00
Gabriel Menezes
16529fafa5
fix: skip auth header on unprotected health status endpoint
fix: skip auth header on unprotected health status endpoint
2026-05-15 15:46:32 -04:00
Gabriel Santana de Menezes
02b8556b02 fix: skip auth header on unprotected health status endpoint 2026-05-15 15:39:32 -04:00
Gabriel Santana de Menezes
9ba47e0ae5 fix: corrigir expiração de token e padronizar constantes
- 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>
2026-05-14 22:45:42 -04:00
Gabriel Santana de Menezes
db463551e6 feat: filtros de busca nas listagens de tasks (#26)
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>
2026-05-14 22:12:05 -04:00
Gabriel Santana de Menezes
7eda39021b chore: remover script de criação do banco keycloak
closes #20

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-14 21:46:17 -04:00
Gabriel Santana de Menezes
345a41cf13 fix: salvar histórico ao criar task
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>
2026-05-14 21:33:44 -04:00
Gabriel Santana de Menezes
0ff655bf8b corrigindo endpomint do healthy 2026-05-14 14:35:15 -04:00
Gabriel Santana de Menezes
0a0228c93e fix health endpoint path and simplify traefik labels
- 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>
2026-05-13 21:46:42 -04:00
Gabriel Santana de Menezes
38b6ddcd5d add prefix on frontend 2026-05-13 21:03:14 -04:00
Gabriel Santana de Menezes
c6e9e6cc77 adicionando prefix on backend 2026-05-13 20:47:06 -04:00
Gabriel Santana de Menezes
da444090ed gc 2026-05-13 20:19:41 -04:00
Gabriel Santana de Menezes
22d770bb1b refazendo sem traefik 2026-05-13 20:14:12 -04:00
Gabriel Santana de Menezes
be17dbd503 downgrade do traefik 2026-05-13 19:45:43 -04:00
Gabriel Santana de Menezes
c6b6cb3035 savepoint 2026-05-13 19:27:01 2026-05-13 19:27:01 -04:00
Gabriel Santana de Menezes
01e0b9ada6 https e ssl 2026-05-13 19:23:16 -04:00
Gabriel Santana de Menezes
3c8f843be9 tentando outra forma de ler os dados 2026-05-13 19:07:50 -04:00
Gabriel Santana de Menezes
7b33b539b0 savepoint 2026-05-13 18:56:56 2026-05-13 18:56:56 -04:00
Gabriel Santana de Menezes
4619ed6d38 savepoint 2026-05-13 18:52:36 2026-05-13 18:52:36 -04:00
Gabriel Santana de Menezes
b510246eb5 adicionando variaveis faltantes 2026-05-13 18:47:25 -04:00
Gabriel Santana de Menezes
080904cebc fix: loggin on traefik 2026-05-13 10:17:05 -04:00
Gabriel Santana de Menezes
eb8247881b update traefik 2026-05-13 09:17:46 -04:00
Gabriel Santana de Menezes
6df7905164 savepoint 2026-05-12 20:14:37 2026-05-12 20:14:37 -04:00
Gabriel Santana de Menezes
23ec0a9066 keys 2026-05-12 20:06:44 -04:00
Gabriel Santana de Menezes
983cfe4176 variaveis do backend 2026-05-12 20:06:44 -04:00
Gabriel Santana de Menezes
f2eb4918a8 adicionando network 2026-05-12 20:06:44 -04:00
Gabriel Santana de Menezes
22f1f8b76c gc 2026-05-12 20:06:44 -04:00
Gabriel Santana de Menezes
7274a07263 downgrade postgres 2026-05-12 20:06:44 -04:00
Gabriel Santana de Menezes
df90385246 adicionando banco no docker prod e servicoes no local 2026-05-12 20:06:44 -04:00
Gabriel Santana de Menezes
37c350b805 fix: change abckend port 2026-05-12 20:06:44 -04:00
Gabriel Santana de Menezes
54d75ec6f4 fix: change abckend port 2026-05-12 20:06:44 -04:00
Gabriel Santana de Menezes
2e9014bb6a fix: using maven installed intead ow wrapper 2026-05-12 20:06:44 -04:00
Gabriel Santana de Menezes
5620c71ed3 fix: removing dockerignore 2026-05-12 20:06:44 -04:00
Gabriel Santana de Menezes
0ab12e0583 fix: build fix 2026-05-12 20:06:44 -04:00
Gabriel Santana de Menezes
b87ab63ac2 chore: deploy 2026-05-12 20:06:44 -04:00
Gabriel Santana de Menezes
8e5d29c7a3 feat: show backend status and system version 2026-05-12 20:06:44 -04:00
Gabriel Santana de Menezes
0e60b06e05 fix: database errors and version on status 2026-05-12 20:06:44 -04:00