Commit graph

48 commits

Author SHA1 Message Date
Gabriel Santana de Menezes
ae0d536ff7 Add optional assignee to task form 2026-05-17 21:18:07 -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
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
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 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
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
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
c6e9e6cc77 adicionando prefix on backend 2026-05-13 20:47:06 -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
54d75ec6f4 fix: change abckend port 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
78bf1be42b fix: database errors and version on status 2026-05-12 20:06:44 -04:00
Gabriel Santana de Menezes
c2a6c52141 chore: first migration 2026-05-12 20:06:44 -04:00
Gabriel Santana de Menezes
6537e96e46 chore: logging 2026-05-12 20:06:44 -04:00
Gabriel Santana de Menezes
92847f4095 feat: reduce org dashboard top tasks from 5 to 3
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-12 20:06:44 -04:00
Gabriel Santana de Menezes
20c69bcb7e fix: include projectless tasks in org dashboard and member detail stats
Tasks with no associated project were being excluded from org dashboard
calculations because the query filtered by project.organization.id.
Now fetches tasks by active member emails, so all tasks are counted.
Tasks and history items with no project are grouped under "Geral" in
project-specific charts and calculations.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-12 20:06:44 -04:00
Gabriel Santana de Menezes
824d33f283 chore: removing unecessary lines
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-12 20:06:44 -04:00
Gabriel Santana de Menezes
90bd08ba39 feat: add member detail modal on org dashboard
Closes #5

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-12 20:06:26 -04:00
Gabriel Santana de Menezes
397e84ae17 fix: return project as object with id and name in task response
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-12 20:06:26 -04:00
Gabriel Santana de Menezes
064a29cc21 fix: separar response do controller do output do use case
Cria XxxResponse records e OrgDashboardControllerMapper na camada do controller,
removendo o vazamento do OrgDashboardOutput para a camada HTTP.
Documenta a regra no CLAUDE.md.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-12 20:06:23 -04:00
Gabriel Santana de Menezes
faf4bed682 feat: dashboard da organização para admin/owner
Adiciona tela de analytics organizacional acessível apenas por OWNER e ADMIN,
com gráfico de pizza por projeto, top 5 tarefas e ranking de membros por tempo trabalhado.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-12 20:05:20 -04:00
Gabriel Santana de Menezes
1868d069c2 chore: enforce coding standards and add project guidelines
- Replace JPQL queries in TaskRepositoryImpl with Panache shorthand and Java filtering
- Replace == null / != null with Objects.isNull() / Objects.nonNull() across all layers
- Add CLAUDE.md with project conventions, architecture rules, and coding standards
- Add .github/PULL_REQUEST_TEMPLATE.md for standardized PR descriptions in Portuguese
- Add .claude/skills/new-task.md workflow guide (issue reading → branch → commit → PR)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-12 20:04:45 -04:00
Gabriel Santana de Menezes
6800688284 listagem apenas das minhas tasks 2026-05-12 20:04:45 -04:00
Gabriel Santana de Menezes
e0a3697e5b ajustes que nao lembro mais 2026-05-12 20:04:45 -04:00
Gabriel Santana de Menezes
4582663fc8 editar task 2026-05-12 20:04:45 -04:00
Gabriel Santana de Menezes
880d72d5d6 imports nao usados 2026-05-12 20:04:45 -04:00
Gabriel Santana de Menezes
7c4884b6ad Corrigndo bug da orgniazacao ativa 2026-05-12 20:04:45 -04:00
Gabriel Santana de Menezes
1688cf092e dashboard 2026-05-12 20:04:45 -04:00
Gabriel Santana de Menezes
e78c15898f Criando tarefa com projeto 2026-05-12 20:04:45 -04:00
Gabriel Santana de Menezes
23b2fa4e1a criando projetos 2026-05-12 20:04:45 -04:00
Gabriel Santana de Menezes
211cc1ba6b mostrando minhas solicitgacoes 2026-05-12 20:04:45 -04:00
Gabriel Santana de Menezes
25770cf58f permitindo cadastrar tarefa sem projeto 2026-05-12 20:04:45 -04:00
Gabriel Santana de Menezes
495984e1a4 banco persistente no h2 e nao obrigatorio a entrar ou criar org 2026-05-12 20:04:45 -04:00
Gabriel Santana de Menezes
56f0d20b06 fix: error when no content response 2026-05-12 20:04:45 -04:00
Gabriel Santana de Menezes
22760ba661 Modal do primeiro acesso 2026-05-12 20:04:45 -04:00
Gabriel Santana de Menezes
92f00ab0a1 criando orgnizacao e associando ao usuario logado e o /me 2026-05-12 20:04:33 -04:00
Gabriel Santana de Menezes
4a2f4371e0 create account, login e refresh token 2026-05-02 22:25:38 -04:00
Gabriel Santana de Menezes
953730fffd Criando organization 2026-05-02 21:46:34 -04:00
Gabriel Santana de Menezes
251362852d listagem e board 2026-04-30 14:31:39 -04:00
Gabriel Santana de Menezes
2bb1ec97a9 criar tasks, start e stop 2026-04-29 21:11:43 -04:00
Gabriel Santana de Menezes
090f2888d0 project scaffold 2026-04-21 15:58:44 -04:00