Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

GabrielTrindadeC/todo-native

Repository files navigation

📝 Aplicativo de Lista de Tarefas em React Native

Expo Node React Native TypeScript

📋 Aplicativo para gerenciamento de tarefas em React Native, utilizando Expo e TypeScript.

📚 Sumário

🚀 Como Rodar

📦 Requisitos

  • Node v20.13.1
  • Yarn v1.22.21
  • Windows, Linux(WSL pode encontrar problemas)

Para rodar o projeto, primeiro clone este repositório:

git clone https://github.com/GabrielTrindadeC/todo-native.git

🛠️ Caminho Fácil

Com o projeto clonado, dentro da pasta raiz do projeto, siga os seguintes passos:

  1. Instalar as dependências: yarn install
  2. Iniciar o aplicativo: yarn start
  3. Caso seja a primeira vez que você roda o projeto sera necessário a instalação do NGROK, a linha de comando vai te pedir para instalar

A forma mais fácil de rodar o projeto é instalando o Expo Go no seu dispositivo móvel e escaneando o QR Code que vai aparecer no seu terminal(tanto o computador quanto o dispositivo móvel devem estar na mesma rede): QR Code

💻 Emulador

Caso você queira rodar o aplicativo com emulador localmente, vai ser necessário configurações adicionais no seu ambiente de desenvolvimento. Com o emulador funcionando corretamente, siga os seguintes passos:

  1. Instalar as dependências: yarn install
  2. Iniciar o aplicativo: yarn start
  3. Pressione a tecla "A", no terminal, para rodar o projeto no emulador Android

✨ Funcionalidades

  • Criar Tarefas

    Criar

  • Deletar Tarefas

    Deletar

  • Editar Tarefas

    Editar

  • Marcar/Desmarcar Tarefa como Concluída, filtrar tarefas concluídas ou por data de criação

    Marcar

  • Tema Claro/Escuro

    Tema

⚙️ Decisões Técnicas

Algumas decisões técnicas foram tomadas para a criação deste aplicativo. Abaixo, explico algumas delas:

  • useReducer: Utilizado em estados complexos (como tarefas), pois é mais otimizado para estados que contêm vários sub-valores, evitando re-renderizações desnecessárias.

  • useCallback e useMemo: Ambos são capazes de memoizar estados/funções, evitando re-renderizações e recálculo dos valores. Exemplo: filtros das tarefas - caso as tarefas não sejam alteradas, ele não recalcula o filtro, apenas utiliza o estado memoizado do array de tarefas.

    code

  • Interface para serviço: Optei por utilizar uma interface para o serviço por ser uma boa prática de desacoplamento. Assim caso seja necessário trocar o tipo do serviço, seja passando a usar REST, Firebase ou qualquer outro tipo de serviço, bastaria implementar a interface e alterar o caller da função sem necessidade de conhecer o serviço atual para desenvolver um novo. code

  • ContextApi: Evitar propdrilling na aplicação e poder disponibilizar os estados de forma global

  • customHook: Hook nomeado de useTodos que abstrai a implementação do context, dessa forma facilito a utilização do meu Provider e desacoplo a logica da tarefas dos meus componentes. code

  • TypeScript: Mantém uma tipagem consistente e segura da aplicação e um melhor uso do IntelliSense do VSCode.

  • Expo: Facilita a criação de aplicativos React Native, abstraindo algumas questões de desenvolvimento em React Native puro e facilitando o build e deploy. Atualmente recomendado pela própria equipe do React Native para criação de novas aplicações.

  • React Native Elements: Um Design System para React Native, usado para manter a estilização dos componentes consistente.

Decidi utilizar do meu conhecimento técnico para demonstrar até onde vai minhas habilidades de tal forma que o app fosse escalavel caso necessário. Reconheço porem que para solucionar o problema proposto, a aplicação poderia ter uma arquitetura mais simples

🚧 Melhorias

Durante o desenvolvimento, identifiquei algumas áreas com espaço para melhorias:

  • Tags de prioridade nas tarefas
  • Possibilidade de agrupar tarefas em categorias ou pastas
  • Internacionalização da aplicação
  • Testes unitários e de integração
  • Versão iOS

👏 Créditos

Para desenvolver, usei um layout da comunidade como inspiração:

Figma

About

Aplicativo de tarefas em React Native

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

Contributors

AltStyle によって変換されたページ (->オリジナル) /