A aplicação está hospedada na plataforma HEROKU e pode ser acessada clicando Aqui podendo ser acessada também em um aparelho mobile, visto que a mesma é responsiva.
email: [email protected]
password: teste
Para esse usuário foram criadas algumas tasks como exemplo, mas podendo também ser criado outro usuário para testar as funcionalidades
Para rodar a aplicação localmente, com o docker instalado em sua máquina, clone o projeto e digite no terminal dentro do diretório do projeto:
docker-compose up --build -d
E acesse: HUBtasks
No desenvolvimento desse projeto foram usadas as seguintes tecnologias:
- ReactJS ( desenolvimento da interface Web responsiva )
- NodeJS ( desenvolvimento da API que realiza o gerenciamento das tasks)
- MongoDB ( base de dados )
E as seguintes ferramentas:
Usado para conteneirizar a aplicação facilitando sua execução e manutenção. Utilizei pois mesmo sendo um requisito não obrigatório da entrega, facilita a manutenção da aplicação quando hospedada em algum servidor de produção.
Banco como serviço usado como base de dados para a aplicação. Foi utilizado por ser um serviço gratuito online de banco além de centralizar os dados da aplicação não importa onde esteja sendo executada.
Ferramenta utilizada para melhor gerenciar o versionamento do projeto ( ex: branchs, commits).
Diversas bibliotecas e frameworks foram usados visando otimização dos processos.
Algumas deles foram:
- Express: microframework utilizado para criação de aplicações web
- Mongoose: espécie de object data mapping para facil manipulação dos dados fornecidos pelo banco Mongo
- Axios: biblioteca usada para realização de chamadas REST
- React Router Dom: usado para navegação entre páginas e componentes no React
- Redux: provê um melhor controle da aplicação, possibilitando um melhor controle do estado global da aplicação
- Redux Saga: middleware utilizado para gerenciar os side-effects da aplicação, assim como ações assíncronas referentes principalmente a chamadas HTTP.
Aqui irei listar possíveis melhorias que poderiam ser feitas com uma suposta decisão de evolução do projeto
-
Caso o backend precise ser publicamente exposto, poderia ser adicionado uma interface para documentação do mesmo, tal como SWAGGER.
-
Adicionar metodo de autenticacao com token (ex:JWT)
-
Relação entre tabelas (ex: tasks dentro de um projeto), e o projeto pode ser compartilhado entre diferentes usuários.
-
Criar uma tela com permissão para gerente (super user), onde ele teria acesso aos dados de todos os usuários e todas as tasks.
-
Adicionar as respectivas importâncias das entregas (prioridades).
-
Utilizar Styled Components, para facilitar a criação de componentes estilizados na aplicação.
-
Juntamente com a aplicação, disponibilizar um container com uma imagem do banco utilizado (Ex: mongo)
-
Segurança adicionando variáveis de ambiente importante da aplicação
-
Adicionar alguns indicadores de status (activity loader) para dar ao cliente noção de telas carregando ou requisições sendo efetuadas.
-
Proporcionar ao usuário ações como resgatar tasks antigas, a funcionalidade SOFT DELETE foi implementada no backend porém o usuário não tem conhecimento da mesma ainda.