GithubHelp home page GithubHelp logo

forloski / weather-app Goto Github PK

View Code? Open in Web Editor NEW
0.0 1.0 0.0 308 KB

Weathe-app as a project for Builders recruitment process

Home Page: weather-app-neon-rho.vercel.app

License: MIT License

JavaScript 0.25% TypeScript 99.75%

weather-app's Introduction

Weather App

Demonstração

https://weather-app-neon-rho.vercel.app/

Instalação

Fazer clone do projeto, entrar na pasta que foi clonado e executar

yarn install

Copie o .env fornecido para a raiz do projeto.

Inicialização

Para iniciar em modo de desenvolvimento

yarn dev

Para fazer build do projeto

yarn build

Para executar em modo de produção

yarn start

Tecnologias Utilizadas

React NextJS TypeScript Material UI ReactQuery RxJS Luxon Emotion

Desenvolvimento

Esse teste foi desenvolvido durante minha primeira semana de recesso em mais de um ano, então optei por não sacrificar tempo com minha família nem minha saúde mental, assim não utilizei todo meu tempo disponível nessa semana para escrever código. Isto resultou em algumas features que acho essenciais ficando de fora, como os testes.

Um segundo ponto é o layout da página que mostra a previsão do tempo para a cidade selecionada. Eu queria fazer algo mais em linha com outros Apps, mas devido ao tempo ficou apenas um grid com as temperaturas de cada horário.

O backend utilizado foi o fornecido pelo NextJS, que eu particularmente não gostei, estou acostumado a utilizar o NestJS que é mais focado em OOP e consegue utilizar as funcionalidades do TS de maneira mais eficiente.

Error Conhecidos

O OpenWeather disponiviliza uma lista com todas as cidades disponiveis e seus respectivos códigos, porém o arquivo tem 100mb de tamanho, o que torna sua utilização dependente de um backend completo com banco de dados e outras funcionalidades, o que adicionaria ainda mais ao tempo do projeto e acho que fugiria um pouco do escopo.

Uma alternativa que encontrei para poder ainda ter o a funcionalidade de procurar por qualquer cidade do mundo foi utilizar a API do Google Maps. Porém nem todos os dados retornados do autocomplete são compativeis com a API do OpenWeather, assim levando a algumas cidades a gerarem erro nas requests de previsão.

Melhorias

Durante as próximas semanas/meses devo adicionar algumas funcionalidades que não consegui nessa versão para utilizar esse projeto num portfólio.

  • Incluir testes unitarios utilizando JestJS e React Testing Library.
  • Incluir testes e2e e integração utilizando Cypress
  • Alterar a maneira que a permissão para obter geolocalização é requerida.
  • Tratar os dados recebidos para obter médias diárias das previsões.
  • Alterar o layout da página de previsão do tempo das cidades.
  • Criar placeHolders para componentes que ainda não carregaram.
  • Criar loading para feedback quando o usuario clica em 'Ver Previsão' e 'Minha Cidade'.
  • Criar um back-end completo para busca de cidades utilizando o ID que o OpenWeather fornece.

Considerações

Emotion foi utilizado no lugar do Styled-Components devido ao primeiro ser o default da MUI, para utilizar o segundo como engine de estilização alguma configurações extras precisam ser feitas, e devido ao wrapper que a MUI faz em volta dessas duas duas engines achei desnecessário gastar tempo com isso. Existe também o fato que as duas bibliotecas são extremamente similares, a ponto que a decisão de utilizar um ou outro fica apenas no bundle size e performance, onde o Emotion tem uma vantagem considerável.

weather-app's People

Contributors

forloski avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.