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).
17 lines
402 B
TypeScript
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();
|
|
},
|
|
};
|