A responsive, bilingual weather application built with React. This project demonstrates how to integrate third-party REST APIs, manage state, and implement seamless internationalization (i18n) for Arabic and English users.
🌍 Live Demo: https://open-weather-api-app-live.netlify.app
| English Version | النسخة العربية |
|---|---|
![]() |
![]() |
- Real-time Weather Data: Fetches current temperature, min/max temperatures, and weather conditions for Amman using the OpenWeather API.
- Full Localization (i18n): Seamlessly switch between English and Arabic.
- Dynamic UI Direction: The layout automatically flips between LTR (Left-to-Right) and RTL (Right-to-Left) based on the selected language.
- Localized Dates: Displays the current date formatted specifically for the user's selected language.
- Modern UI: Clean, glass-morphism inspired design built with Material-UI (MUI).
This project was a major stepping stone for me in transitioning from building static React components to dynamic, data-driven applications.
Here is a breakdown of my learning process:
- API Testing & Integration: Before writing code, I learned how to use Postman to test API endpoints (like the Aladhan API and OpenWeather API) to understand JSON input/output structures.
- Mastering HTTP Requests: I transitioned from using the native Fetch API (learned during FreeCodeCamp) to using the Axios library, which made handling requests and responses much cleaner and easier to manage.
- Internationalization (i18n): I successfully implemented the
i18nextandreact-i18nextlibraries. This taught me how to manage translation files and dynamically update the entire app's text and layout direction (rowvsrow-reverse) without reloading the page. - Date Formatting: I integrated Moment.js to handle complex date formatting and locale switching, moving away from the limitations of the native JS
Dateobject. - UI Frameworks: Strengthened my skills in using Material-UI (MUI) components like
Card,Stack, andTypographyto build a responsive interface quickly.
- Frontend: React.js
- Styling & UI: Material-UI (MUI), CSS
- HTTP Client: Axios
- Localization: i18next, react-i18next
- Date Handling: Moment.js
- API: OpenWeatherMap API
To run this project on your local machine, follow these steps:
- Clone the repository:
git clone https://github.com/JoudN2001/Weather-App.git
- Navigate to the project directory:
cd Weather-App - Install the dependencies:
npm install
- Start the development server:
npm start
- Open http://localhost:3000 to view it in your browser.

