Skip to content

Web API desenvolvida em .NET 8 para o gerenciamento de tarefas e autenticação de usuários.

Notifications You must be signed in to change notification settings

Paulo-Ricard0/TaskfyAPI

Repository files navigation

Banner Taskfy

📝 TASKFY

Um sistema em .NET para gerenciamento de tarefas

Status: Concluído 🚀


📋 Índice


💻 Visão Geral

Uma Web API desenvolvida em .NET 8 para o gerenciamento de tarefas e autenticação de usuários. Ela permite a criação, atualização, consulta e exclusão de tarefas, bem como o registro e login de usuários, e inclui um sistema de logs e tratamento de erros.


📚 Documentação

  • Para visualizar a documentação de todas as rotas da API, clique aqui

🧩 Diagrama de Sequência do sistema

sequenceDiagram
    participant User
    participant Frontend
    participant Backend
    participant Database

    User->>Frontend: Preenche formulário de registro
    Frontend->>Backend: POST /api/users/register (dados do usuário)
    Backend->>Backend: Valida dados de registro
    Backend->>Database: Verifica se e-mail já está em uso
    Backend->>Database: Insere novo usuário
    Backend-->>Frontend: 201 Created (mensagem confirmação) / 400 Bad Request / 409 Conflict
    Frontend-->>User: Redireciona para página de login

    User->>Frontend: Preenche formulário de login
    Frontend->>Backend: POST /api/users/login (e-mail, senha)
    Backend->>Backend: Valida dados de login
    Backend->>Database: Verifica credenciais
    Backend-->>Frontend: 200 OK (token JWT) / 401 Unauthorized / 400 Bad Request
    Frontend-->>User: Redireciona para página principal

    User->>Frontend: Acessa página principal
    Frontend->>Backend: GET /api/tasks/ (token JWT)
    Backend->>Backend: Valida token JWT
    Backend->>Database: Recupera lista de tarefas
    Database-->>Backend: Lista de tarefas
    Backend-->>Frontend: 200 OK (lista de tarefas) / 401 Unauthorized / 404 Not Found
    Frontend-->>User: Exibe lista de tarefas

    User->>Frontend: Clica em adicionar nova tarefa
    Frontend->>User: Exibe formulário de nova tarefa
    User->>Frontend: Preenche formulário de nova tarefa
    Frontend->>Backend: POST /api/tasks/ (detalhes da tarefa, token JWT)
    Backend->>Backend: Valida token JWT
    Backend->>Backend: Valida dados da tarefa
    Backend->>Database: Insere nova tarefa
    Backend-->>Frontend: 201 Created (objeto JSON da tarefa) / 400 Bad Request / 401 Unauthorized
    Frontend-->>User: Exibe a nova tarefa na lista

    User->>Frontend: Clica em editar tarefa existente
    Frontend->>Backend: GET /api/tasks/{taskId} (token JWT)
    Backend->>Backend: Valida token JWT
    Backend->>Database: Recupera detalhes da tarefa
    Database-->>Backend: Detalhes da tarefa
    Backend-->>Frontend: 200 OK (detalhes da tarefa) / 401 Unauthorized / 404 Not Found
    Frontend-->>User: Exibe formulário preenchido
    User->>Frontend: Edita e envia o formulário
    Frontend->>Backend: PUT /api/tasks/{taskId} (novos detalhes da tarefa, token JWT)
    Backend->>Backend: Valida token JWT
    Backend->>Backend: Valida dados da tarefa
    Backend->>Database: Atualiza tarefa
    Backend-->>Frontend: 200 OK (objeto JSON atualizado) / 401 Unauthorized / 403 Forbidden / 404 Not Found / 400 Bad Request
    Frontend-->>User: Exibe a tarefa atualizada na lista

    User->>Frontend: Clica em excluir tarefa existente
    Frontend->>Backend: DELETE /api/tasks/{taskId} (token JWT)
    Backend->>Backend: Valida token JWT
    Backend->>Database: Exclui tarefa
    Backend-->>Frontend: 200 OK / 401 Unauthorized / 403 Forbidden / 404 Not Found
    Frontend-->>User: Remove a tarefa da lista
Loading

⚙️ Funcionalidades

  • Registro de Usuário: Permite que novos usuários se registrem na aplicação utilizando nome de usuário, e-mail e senha.
  • Login de Usuário: Autentica com e-mail e senha usuários já registrados.
  • CRUD de Tarefas: Permite que usuários criem, busquem, atualizem e excluam suas tarefas.
  • Envio de e-mails: Envia e-mails de notificação para o usuário.
  • Middleware Global de Erros: Captura e trata erros, fornecendo respostas adequadas ao cliente e registrando logs.
  • Sistema de Logs: Monitora e registra erros e eventos importantes na aplicação.

✉️ Fluxo de mensageria

flowchart TD
    A[Usuario] --> |Realiza uma ação| B[Taskfy.API]
    B --> C[Publica uma notificação no RabbitMQ]
    C --> D[Exchange]
    D --> E[taskfy_notification_queue]
    E --> |Consome a fila| F[Taskfy.NotificationService]
    F --> |Cria o template de email e publica na fila| G[Exchange]
    G --> H[taskfy_email_queue]
    H --> |Consome a fila| I[Taskfy.EmailService]
    I --> |Envia e-mail| J[Destinatário]
    
    subgraph RabbitMQ_______________
        D
        E
        G
        H
    end
    
    subgraph Serviços
        F
        I
    end                                                
Loading

🧪 Testes

A aplicação inclui uma suíte de testes unitários utilizando o xUnit, cobrindo todos os casos relevantes nos controllers e services de usuários e tarefas.

  • Total de Testes: 41
  • Cobertura: Controllers e Services de Usuários e Tarefas

Imagem com testes unitarios


🛠️ Tecnologias utilizadas

Aplicação:

  • .NET 8
  • Entity Framework Core
  • AspNetCore Identity
  • JWT
  • AutoMapper
  • Swagger

Mensageria e envio de e-mails:

  • RabbitMQ
  • MailKit

Banco de dados:

  • SQL Server

Testes unitários:

  • xUnit
  • NSubstitute
  • FluentAssertions

🧑‍💻 Autor

Esse projeto foi desenvolvido por:

Foto Paulo Ricardo
Paulo Ricardo

voltar ao topo

About

Web API desenvolvida em .NET 8 para o gerenciamento de tarefas e autenticação de usuários.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages