DEV Community

Syed Muhammad Ali Raza
Syed Muhammad Ali Raza

Posted on

Weather App using MERN Stack

Building a Weather App Using the MERN Collection: A Comprehensive Guide

Introduction:

In this article, we will explore the process of building a weather application using the MERN package (MongoDB, Express.js, React.js and Node.js). MERN suite is a powerful combination of technologies that make web applications efficient and scalable. We'll walk through the full implementation, provide pseudocode, and provide clean code examples for each part of the program.

Full Implementation:

  1. Backend settings (Node.js and Express.js):

a. Create a new Node.js project.
b. Start the project with package.json.
c. Install required dependencies (eg express, mangos, axios).
d. Create a server file (eg server.js) and install Express.js.
e. Define API routes to get weather data from external APIs and
manage CRUD operations.
f. Connect to a MongoDB database using Mongoose.

  1. Setup Frontend (React.js):

a. Create a new React.js project.
b. Install required dependencies (eg axios).
c. Create a component file for the weather application (eg
App.js, Weather.js).
d. Implement the React.js component required to display the
weather data.
e. Create an API service file to manage data retrieval from the
backend.

  1. User Interface:

a. Design and implement user-friendly UI using HTML, CSS and
React.js components.
b. Create an input field to search for a location and a login
button.
c. Display delivered weather data in an attractive way.

  1. API integration:

a. Choose a weather API provider (eg OpenWeatherMap,
Weatherbit).
b. Get weather information based on user input and selected API.
c. Analyze the data received and obtain relevant information (eg
temperature, humidity, wind speed).
d. Store the retrieved data in the MongoDB database.

  1. Error Handling and Validation:

a. Implement error handling for API requests, server-side
errors, and form validation.
b. Display a relevant error message to the user in case of
failure.

Pseudo code:

Backend:

  1. Create a server using Express.js.
  2. Define API routes for:
    • Get weather information based on user input.
    • Save weather data to database.
  3. Connect to the MongoDB database using Mongoose.

Frontend:

  1. Create a React.js component for the Air application.
  2. Create form fields to capture user input.
  3. Manage form submission event.
  4. Get weather data from backend API using Axios.
  5. Show the received data to the user.

Example:

Backend (Node.js and Express.js):

// server.js
const Express = request ( 'Express' );
const program = express();
const port = 3000;

app.use (Express.json());

// define the route
app.get('/weather', (req, res) => {
  // Get weather data from external API
  // Process and send client data
});

app.post('/weather', (req, res) => {
  // Save weather data to database
});

app.listen(port,() => {
  console.log("Port {server running on port");
});
``
Enter fullscreen mode Exit fullscreen mode

Front-end (React.js):

// App.js
React from React { import useState import;
import axios from 'axios';

const App = () => {
  const [location, setLocation] = useState('');
  const [weatherData, setWeatherData] = useState(null);

  const handleSubmit = async(e) => {
    e.preventDefault();
    try {
      const response = await axios.get(`/air?location = ${location}`);
      setWeatherData (response.data);
    } catch (error) {
      console.error(error);
    }
  };

  return (
    <div>
      <form onSubmit = {handleSubmit}>
        <enter
          type="text"
          price = {location}
          onChange = {(e) => setLocation(e.target.value)}
        />
        <button type="submit">Get Air</button>
      </form>
      { airData && (
        <div>
          <h2> {weatherData.location} </h2>
          <p>Temperature: {weatherData.temperature} </p>
          <p>Humidity: {weatherData.humidity} </p>
          <p>Wind Speed: {weatherData.windSpeed} </p>
        </div>
      )}
    </div>
  );
};

export the main program;
Enter fullscreen mode Exit fullscreen mode

The results:

Building a weather application using the MERN stack provides a great opportunity to leverage the power of this technology. By following the steps in this article, you can create a fully functional weather app that allows users to get weather information based on their location. The pseudocode and clean code examples provided should help you get started with your own MERN stack weather software project.

Top comments (0)