Skip to content

ArthurWillameBr/task-flow-api

Repository files navigation

Task Flow API

Descrição do Projeto 📃

O Task Flow é uma API RESTful desenvolvida para gerenciamento de tarefas, oferecendo autenticação de usuários e controle de atividades. Através do Task Flow, os usuários podem criar, editar, atualizar e deletar suas tarefas, além de gerenciar prioridades e filtrar tarefas conforme sua necessidade.

Padrões e Arquitetura Utilizada 🔨

O Task Flow segue uma arquitetura modular e organizada, dividida em casos de uso, repositórios e controllers, garantindo clareza e manutenção facilitada do código. A arquitetura foi projetada com foco em desacoplamento e flexibilidade, utilizando princípios do SOLID para melhorar a robustez do sistema.

Use Case: Os casos de uso representam a camada mais pura da aplicação, totalmente desacoplada e independente do framework utilizado. Isso garante que a lógica central do negócio possa ser testada e mantida sem dependências diretas de infraestruturas externas. O uso do princípio Single Responsibility (SRP) do SOLID assegura que cada classe possui uma única responsabilidade, tornando o código mais legível e fácil de manter.

Repositores: A camada de repositório é responsável por interagir com o banco de dados, gerenciando o armazenamento e recuperação de dados. Essa camada também está desacoplada do resto da aplicação, utilizando o Repository Pattern, facilitando a troca ou atualização da infraestrutura de persistência sem afetar o restante do código.

Controllers: Os controllers servem como intermediários entre as requisições HTTP e os casos de uso, cuidando da interface com o cliente (API RESTful) e chamando os casos de uso apropriados para atender as requisições.

Tecnologias utilizadas 👩‍💻

  • Node.js - Plataforma backend.
  • Express - Framework para construção de APIs REST.
  • TypeScript - Tipagem estática para maior segurança no desenvolvimento.
  • Prisma ORM - Mapeamento objeto-relacional para manipulação de dados.
  • MySQL - Bancos de dados relacional
  • JWT - Autenticação baseada em tokens.

Pré-requisitos ⚠

Antes de começar, você vai precisar ter instalado em sua máquina as seguintes ferramentas: Git, Node.js. Além disto é bom ter um editor para trabalhar com o código como VSCode

Rodando a aplicação 🚀

# Clone este repositório
$ git clone <https://github.com/ArthurWillameBr/task-flow-api.git>

# Acesse a pasta do projeto no terminal/cmd
$ cd task-flow-api

# Instale as dependências
$ npm install

# Configure o arquivo de variáveis de ambiente
# Existe um arquivo chamado .env.example no projeto. Renomeie-o para .env e configure as variáveis de acordo com seu ambiente.

# No arquivo .env, adicione a string de conexão com o banco de dados, como por exemplo:
DATABASE_URL="mysql://user:password@localhost:3306/task_flow_db"

# Execute as migrações do Prisma para criar as tabelas no banco de dados
$ npx prisma migrate dev

# Opcional: Visualize o banco de dados com o Prisma Studio
$ npx prisma studio

# Execute a aplicação em modo de desenvolvimento
$ npm run start:dev

# O servidor inciará na porta:3333 - acesse <http://localhost:3333>

RFs (Requisitos funcionais)

  • O usuário deve poder se cadastrar;
  • O usuário deve poder se autenticar;
  • O usuário autenticado deve poder visualizar seu perfil;
  • O usuário autenticado deve poder fazer logout;
  • O usuário autenticado deve poder cadastrar uma tarefa com: título, descrição, status (A fazer, Feito, Em progresso, Backlog, Cancelado) e prioridade (Alta, Média, Baixa);
  • O usuário autenticado deve poder atualizar o status de uma tarefa específica;
  • O usuário autenticado deve poder atualizar a prioridade de uma tarefa específica;
  • O usuário autenticado deve poder editar uma tarefa específica;
  • O usuário autenticado deve poder excluir uma tarefa específica;
  • O usuário autenticado deve poder filtrar tarefas por título;
  • O usuário autenticado deve poder filtrar tarefas por status;
  • O usuário autenticado deve poder filtrar tarefas por prioridade;

RNs (Regras de negocios)

  • O usuário não deve poder se cadastrar com um e-mail duplicado;
  • Os status possíveis para uma tarefa são: A fazer, Feito, Em progresso, Backlog, Cancelado;
  • As prioridades possíveis para uma tarefa são: Alta, Média, Baixa;

RNFs (Requisitos não funcionais)

  • A senha do usuário precisa estar criptografada;
  • Os dados da aplicação precisam estar persistidos em um banco Mysql;
  • O usuário deve ser identificado por um JWT (JSON Web Token);

About

Gerenciador de tarefa

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published