This project was bootstrapped with Create React App.
In the project directory, you can run:
Please make sure to run npm install
before running npm start
. That will make sure all dependencies are installed.
Runs the app in the development mode.
Open http://localhost:3000 to view it in the browser.
The page will reload if you make edits.
You will also see any lint errors in the console.
Launches the test runner in the interactive watch mode.
After running npm test
press a
to run all tests
Builds the app for production to the build
folder.
It correctly bundles React in production mode and optimizes the build for the best performance.
This application was developed in ReactJS with Redux. The entire application is based on Redux Store, what makes the application light and efficient.
Two different APIs were used:
1-) Teleport Public API (https://developers.teleport.org/api/getting_started/), which was used to display the names of all possible locations in the world, get their name, and coordinates
2-) OpenWeatherMap 5 day Forecast API, which was used to fetch data about the current weather of the day, and also the forecast for the next 5 days
The application shows details about temperature, humidity, wind speed, hour by hour forecast, and also provides different degree units to be displayed ( Celsius, Kelvin, and Fahrenheit ).
Jest and Enzyme was used for testing.
The entire application is responsive.
The Home Screen was created with the intention of getting from the user the location desired. Once this location is defined, either by getting the user's current location or by the user manually searching for a specific location in the World, the application can provide the current weather and 5 day forecast.
In the Search location Screen you can search any location in the World and discover its current weather and 5 day forecast.
In addition, the application keeps a record of the latest 20 searches performed by the user and displays it in the Search location Screen when nothing is being searched.
The Forecast Screen displays cards with the current weather (temperature, humidity, and wind speed), and the forecast for the next 5 days. Also it displays an hour by hour forecast informing the expected temperature for a given hour of the day.
In addition, you can select the degree unit you desire ( Celsius, Kelvin, or Fahrenheit )
Regarding future improvements, it would be interesting to add user authentication so the user experience could be improved. Also, the following could be implemented:
1-) Animations to improve user experience
2-) Maps to provide a more interactive experience to the client
3-) Latest news about the weather, either on the user's location or in the user's favorite places
4-) Adding weather information about airports and beaches would be useful as well
5-) Once the application has a reasonable amount of users, add advertisement
6-) Implement more complex tests to guarantee the good functionality of the application