O TaskFlow é um projeto que visa facilitar a colaboração entre desenvolvedores por meio de tarefas colaborativas.
- Faça um clone desse repositório rodando:
git clone https://github.com/Ally-Matias/Task-Flow.git
; - Entre na pasta rodando pelo terminal:
cd Task-Flow
; - Rode
npm install
para instalar as dependências do projeto; - Rode na pasta FrontEnd
npm run dev
para iniciar o frontend do projeto. - Acrescente também na pasta Backend um arquivo
.env
com esse conteúdoBCRYPT_SECRET=D35CUBR4537ORC@P@Z!
- Para rodar o banco de dados, o MongoDB pode ser executado em um contêiner do Docker, após instalar e configurar o mesmo, use esse comando para iniciar:
sudo docker run -p 27017:27017 -d mongo
- Rode na pasta BackEnd
nodemon server.js
para iniciar o backend do projeto.
• Envio de dados utilizando Sockets TCP.
O TaskFlow utiliza a biblioteca Socket.IO para permitir uma comunicação bidirecional em tempo real entre clientes e servidor através de WebSockets, garantindo eficiência e confiabilidade no envio e recebimento de dados entre os desenvolvedores conectados ao sistema.
• Protocolo Requisição/Resposta.
No TaskFlow, o protocolo HTTP será utilizado para gerenciar as requisições e respostas entre os clientes e o servidor. Os clientes enviarão requisições HTTP para o servidor, que processará essas solicitações e enviará as respostas correspondentes de volta aos clientes.
• Representação externa de dados.
O TaskFlow utiliza o MongoDB como banco de dados para armazenar e recuperar os dados do sistema. O MongoDB é um banco de dados NoSQL que trabalha com documentos JSON, o que facilita a representação externa dos dados. Os desenvolvedores podem interagir com o banco de dados MongoDB para armazenar informações relacionadas a tarefas, usuários, mensagens e outros dados relevantes do sistema.
🔷 Privacidade:
• Garantir a privacidade dos dados dos usuários e tarefas no sistema.
Para garantir a privacidade dos dados, o TaskFlow utiliza diversas tecnologias, incluindo:
- bcrypt: Uma biblioteca para criptografia de senhas, que permite armazenar senhas de forma segura no banco de dados.
- jsonwebtoken: Implementação de JSON Web Tokens (JWT) para autenticação e autorização, garantindo que apenas usuários autenticados tenham acesso a determinados recursos.
- helmet: Um middleware do Express que ajuda a proteger a aplicação configurando vários cabeçalhos HTTP relacionados à segurança.
- Certificados SSL/TLS: Tanto no frontend quanto no backend, utilizamos certificados SSL/TLS para estabelecer conexões seguras e criptografadas entre o cliente e o servidor. Essa criptografia de ponta a ponta protege a privacidade dos dados durante a transmissão, garantindo que as informações sejam acessadas apenas pelo remetente e pelo destinatário pretendidos.
🔷 Confiabilidade:
• Assegurar a confiabilidade na transmissão e armazenamento dos dados.
Para garantir a confiabilidade na transmissão e armazenamento dos dados, o TaskFlow utiliza as seguintes tecnologias:
- Socket.IO: Permite a comunicação em tempo real entre clientes e servidor, garantindo a entrega eficiente e confiável dos dados.
- MongoDB: Um banco de dados NoSQL altamente confiável, que fornece recursos de replicação e balanceamento de carga para garantir a disponibilidade e confiabilidade dos dados.
- Express: Um framework web confiável para construir APIs RESTful, oferecendo uma base sólida para a comunicação segura entre o cliente e o servidor.
- bcrypt: Uma biblioteca para criptografia de senhas, garantindo a segurança dos dados armazenados.
- jsonwebtoken: Implementação de JSON Web Tokens (JWT) para autenticação e autorização dos usuários, garantindo a integridade e autenticidade das informações transmitidas.
🔷 Escalabilidade:
• Permitir que o sistema seja capaz de lidar com um grande número de usuários e tarefas.
Para garantir a escalabilidade do sistema, o TaskFlow utiliza as seguintes tecnologias e práticas:
- MongoDB: Com sua arquitetura flexível e escalável, o MongoDB permite que o sistema lide com um grande volume de dados e suporte a um número crescente de usuários e tarefas.
- Node.js: Com seu modelo de E/S não bloqueante e orientação a eventos, o Node.js permite um processamento eficiente e escalável das requisições, possibilitando a resposta rápida mesmo com um grande número de usuários.
- Express: Um framework leve e rápido que ajuda a construir APIs escaláveis, fornecendo uma base sólida para o gerenciamento de rotas e manipulação de requisições.
Frontend:
- React - Biblioteca JavaScript para construção da interface do usuário.
- React Router - Roteamento para aplicativos React.
- Styled Components - Biblioteca para estilização de componentes com CSS-in-JS.
- Axios - Cliente HTTP para realizar requisições para o servidor.
- Mitt - Gerenciador de eventos para comunicação interna entre os componentes.
Backend:
- Node.js - Ambiente de execução JavaScript do lado do servidor.
- Express - Framework web para construção de APIs RESTful.
- MongoDB - Banco de dados NoSQL para armazenamento e recuperação de dados.
- Socket.IO - Biblioteca para comunicação em tempo real usando WebSockets.
- bcrypt - Biblioteca para criptografia de senhas.
- jsonwebtoken - Implementação de JSON Web Tokens (JWT) para autenticação e autorização.