Este projeto foi desenvolvido como parte de um desafio técnico com foco em Next.js 15, tRPC, React e TypeScript. A aplicação simula um sistema simples de gerenciamento de tarefas, com operações completas de CRUD, SSR e feedback visual.
- Next.js 15 (App Router)
- React 18
- TypeScript
- tRPC
- Tailwind CSS
- Zod
- Lucide React Icons
- Node.js na versão v20.19.0
- npm
- Clone o repositório:
git clone https://github.com/isapoloni/artefact-desafio- Instale as dependências:
npm install- Execute o projeto localmente:
npm run dev- Acesse no navegador: http://localhost:3000
- Listagem de tarefas com SSR
- Criação de nova tarefa via formulário
- Edição de tarefas existentes
- Exclusão com confirmação e feedback
- Validação de formulário
- Tratamento de erros do backend via tRPC
- Scroll infinito na listagem (bônus)
- Feedback visual (loading, sucesso, erro)
Cada tarefa é representada por um objeto com os seguintes campos:
type Task = {
id: string; // Identificador único (UUID)
title: string; // Título da tarefa (obrigatório)
description?: string; // Descrição (opcional)
createdAt: string; // Data de criação em ISO string
}A camada de API foi implementada com tRPC e mantém os dados das tarefas em memória (sem banco de dados). Ela oferece os seguintes endpoints:
create: Cria uma nova tarefa (validação com Zod, exige título)list: Lista todas as tarefas (sem paginação)update: Atualiza uma tarefa existentedelete: Remove uma tarefa pelo ID
infiniteList: Retorna tarefas com paginação baseada em cursor, ideal para scroll infinito- Parâmetros:
limit: número de tarefas por página (padrão: 10)cursor: ID da última tarefa carregada (opcional)
- Retorna:
items: array de tarefas da página atualnextCursor: ID da próxima tarefa a ser usada como cursor
- Parâmetros:
Todos os endpoints estão validados com Zod e fornecem mensagens de erro detalhadas via TRPCError.
- Estado de carregamento em todas as requisições assíncronas
- Mensagens de erro amigáveis para falhas comuns
- Confirmações visuais para ações de sucesso (como exclusão ou criação)
- Implementado scroll infinito para carregamento dinâmico de tarefas
- Código comentado e documentado para melhor entendimento
Este projeto é volátil: os dados das tarefas são mantidos apenas em memória (RAM). Ao reiniciar o servidor, todos os dados serão perdidos, já que não há persistência em banco de dados.
Se quiser bater um papo técnico ou tirar dúvidas:
Isabella Poloni
📧 isabella Poloni
💼 LinkedIn
Obrigado por conferir este projeto! Espero que ele reflita boas práticas, foco em DX/UX e arquitetura moderna com Next.js! 🚀🧠