beetask/frontend/src/services/publicStatsService.ts
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

17 lines
402 B
TypeScript

import { apiFetch } from "../lib/api";
export interface PublicStats {
totalUsers: number;
totalOrganizations: number;
totalCompletedTasks: number;
totalTrackedHours: number;
}
export const publicStatsService = {
getStats: async (): Promise<PublicStats> => {
const response = await apiFetch("/public/stats", {
method: "GET",
}) as Response;
return response.json();
},
};