Uma aplicação completa de gerenciamento de tarefas desenvolvida com .NET Core, React.js e PostgreSQL.
- .NET 8.0 - Framework principal
- Entity Framework Core - ORM para acesso ao banco de dados
- PostgreSQL - Banco de dados relacional
- JWT Bearer Authentication - Autenticação e autorização
- Swagger/OpenAPI - Documentação da API
- xUnit - Framework de testes unitários
- React 18 - Biblioteca JavaScript para UI
- TypeScript - Superset tipado do JavaScript
- Redux Toolkit - Gerenciamento de estado global
- React Query (TanStack Query) - Cache e sincronização de dados do servidor
- Ant Design - Biblioteca de componentes UI
- Axios - Cliente HTTP para requisições
- Docker & Docker Compose - Containerização e orquestração
- PostgreSQL Alpine - Banco de dados containerizado
- Login com usuário e senha fixos
- Geração e validação de tokens JWT
- Proteção de rotas autenticadas
- ✅ Listar todas as tarefas
- ➕ Criar nova tarefa
- ✏️ Editar tarefa existente
- 🗑️ Excluir tarefa
- 📊 Visualizar estatísticas das tarefas
- Design responsivo com Ant Design
- Gerenciamento de estado otimizado com Redux Toolkit
- Cache inteligente e sincronização de dados com React Query
- Feedback visual para ações do usuário
- Controle de loading e estados de erro
- Atualizações otimistas para melhor UX
- Logout automático quando token expira
- Docker e Docker Compose instalados
- Git para clonar o repositório
- Clone o repositório:
git clone <url-do-repositorio>
cd taskforU- Execute o projeto:
docker-compose up --build- Aguarde a inicialização:
- PostgreSQL: Porta 5432
- Backend API: http://localhost:5000
- Frontend: http://localhost:3000
- Swagger UI: http://localhost:5000/swagger
cd backend
dotnet restore
dotnet runcd frontend
npm install
npm startPara acessar a aplicação, use as seguintes credenciais:
- Email:
admin@taskforu.com - Senha:
admin123
- Acesse http://localhost:3000
- Insira as credenciais acima
- Clique em "Entrar"
- Você será redirecionado para o dashboard
-
Acesse o Swagger UI: http://localhost:5000/swagger
-
Faça login para obter o token:
- Clique em
POST /api/auth/login - Clique em "Try it out"
- Use o JSON:
{ "email": "admin@taskforu.com", "password": "admin123" }- Execute e copie o token da resposta
- Clique em
-
Autorize no Swagger:
- Clique no botão "Authorize" (🔒)
- Digite:
Bearer {seu-token-aqui} - Clique em "Authorize"
-
Teste os endpoints protegidos:
- Agora você pode testar todos os endpoints
/api/tasks
- Agora você pode testar todos os endpoints
- Estatísticas: Visualize o total de tarefas, concluídas e pendentes
- Lista de Tarefas: Veja todas as suas tarefas com status e data de criação
-
Criar Tarefa:
- Clique em "Nova Tarefa"
- Preencha título e descrição
- Clique em "Criar"
-
Editar Tarefa:
- Clique no ícone de edição (✏️) na tarefa desejada
- Modifique os campos necessários
- Clique em "Salvar"
-
Marcar como Concluída:
- Clique no ícone de check (✅) para marcar como concluída
- Ou use o ícone de desfazer (↩️) para marcar como pendente
-
Excluir Tarefa:
- Clique no ícone de lixeira (🗑️)
- Confirme a exclusão
- Clique no ícone de logout no canto superior direito
- Você será redirecionado para a tela de login
cd backend
dotnet testOs testes cobrem:
- ✅ Criação de tarefas
- ✅ Listagem de tarefas
- ✅ Busca por ID
- ✅ Atualização de tarefas
- ✅ Exclusão de tarefas
- ✅ Estatísticas de tarefas
taskforU/
├── backend/ # API .NET Core
│ ├── Controllers/ # Controladores da API
│ ├── Services/ # Lógica de negócio
│ ├── Models/ # Modelos de dados
│ ├── DTOs/ # Objetos de transferência
│ ├── Data/ # Contexto do banco
│ └── Tests/ # Testes unitários
├── frontend/ # Aplicação React
│ ├── src/
│ │ ├── components/ # Componentes reutilizáveis
│ │ ├── pages/ # Páginas da aplicação
│ │ ├── services/ # Serviços de API
│ │ ├── contexts/ # Contextos React
│ │ ├── store/ # Redux store e slices
│ │ ├── hooks/ # Hooks customizados (React Query)
│ │ ├── lib/ # Configurações (QueryClient)
│ │ └── types/ # Definições TypeScript
└── docker-compose.yml # Orquestração dos containers
ASPNETCORE_ENVIRONMENT: Ambiente de execuçãoASPNETCORE_URLS: URLs de bindingJWT_SECRET: Chave secreta para JWTJWT_ISSUER: Emissor do tokenJWT_AUDIENCE: Audiência do token
REACT_APP_API_URL: URL da API backend
- Host: localhost (ou postgres no Docker)
- Porta: 5432
- Database: taskforu
- Usuário: postgres
- Senha: postgres123
-
Erro de conexão com banco:
- Verifique se o PostgreSQL está rodando
- Confirme as credenciais no
docker-compose.yml
-
Frontend não conecta com backend:
- Verifique se a
REACT_APP_API_URLestá correta - Confirme se o backend está rodando na porta 5000
- Verifique se a
-
Token JWT inválido:
- Faça logout e login novamente
- Verifique se as configurações JWT estão corretas
# Ver logs de todos os serviços
docker-compose logs
# Ver logs de um serviço específico
docker-compose logs backend
docker-compose logs frontend
docker-compose logs postgres- 🚀 Getting Started - Guia completo de configuração e execução para novos usuários
- 🏗️ Arquitetura do Sistema - Documentação detalhada da arquitetura, padrões e estrutura do projeto
- 🎨 Padrões de Design - Padrões de design e boas práticas utilizadas no projeto
- 📊 Diagrama de Arquitetura - Visualização completa da arquitetura 3-tier do sistema
💡 Dica: Para uma configuração rápida, consulte o Getting Started. Para entender a arquitetura em detalhes, veja ARCHITECTURE.md e o diagrama visual.
POST /api/auth/login- Fazer login
GET /api/tasks- Listar tarefasPOST /api/tasks- Criar tarefaGET /api/tasks/{id}- Buscar tarefa por IDPUT /api/tasks/{id}- Atualizar tarefaDELETE /api/tasks/{id}- Excluir tarefaGET /api/tasks/stats- Estatísticas das tarefas
- Faça um fork do projeto
- Crie uma branch para sua feature (
git checkout -b feature/AmazingFeature) - Commit suas mudanças (
git commit -m 'Add some AmazingFeature') - Push para a branch (
git push origin feature/AmazingFeature) - Abra um Pull Request
Este projeto está sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.