The Front-End
Frameworks
Building a Full-stack Application

Building a Complete Web Application with Full-Stack Frameworks

Developing a complete web application using full-stack frameworks involves seamlessly integrating the front-end and back-end components to create a cohesive user experience. In this guide, we'll walk through the process using the MERN (MongoDB, Express.js, React, Node.js) stack as an example.

  1. Overview of the MERN Stack
  2. Steps to Build a MERN Stack Application
  3. Conclusion

Overview of the MERN Stack:

1. MongoDB (Database):

  • A NoSQL database to store application data.

2. Express.js (Back-End):

  • A back-end framework for Node.js to handle server-side logic and API routes.

3. React (Front-End):

  • A front-end library for building interactive user interfaces.

4. Node.js (JavaScript Runtime):

  • A JavaScript runtime for server-side development.

Steps to Build a MERN Stack Application:

1. Set Up the Back-End (Express.js):

  • Create an Express.js application with routes for handling API requests and interacting with the MongoDB database.
// server.js
const express = require('express');
const mongoose = require('mongoose');
const app = express();
const port = 3001;
 
// Connect to MongoDB
mongoose.connect('mongodb://localhost:27017/mydatabase', { useNewUrlParser: true, useUnifiedTopology: true });
 
// Define MongoDB Schema and Model
const itemSchema = new mongoose.Schema({
  name: String,
  description: String,
});
const Item = mongoose.model('Item', itemSchema);
 
// Express.js Routes
app.use(express.json());
 
app.get('/api/items', async (req, res) => {
  const items = await Item.find();
  res.json(items);
});
 
app.post('/api/items', async (req, res) => {
  const newItem = new Item(req.body);
  await newItem.save();
  res.status(201).json(newItem);
});
 
app.listen(port, () => {
  console.log(`Express server running at http://localhost:${port}`);
});

2. Set Up the Front-End (React):

  • Create a React application to interact with the Express.js API, allowing users to view and add items.
// src/App.js
import React, { useState, useEffect } from 'react';
import axios from 'axios';
 
const App = () => {
  const [items, setItems] = useState([]);
  const [itemName, setItemName] = useState('');
  const [itemDescription, setItemDescription] = useState('');
 
  useEffect(() => {
    axios.get('/api/items').then((response) => {
      setItems(response.data);
    });
  }, []);
 
  const addItem = () => {
    axios.post('/api/items', { name: itemName, description: itemDescription }).then((response) => {
      setItems([...items, response.data]);
      setItemName('');
      setItemDescription('');
    });
  };
 
  return (
    <div>
      <h1>My MERN Stack Application</h1>
      <ul>
        {items.map((item) => (
          <li key={item._id}>{item.name} - {item.description}</li>
        ))}
      </ul>
      <input type="text" placeholder="Item Name" value={itemName} onChange={(e) => setItemName(e.target.value)} />
      <input type="text" placeholder="Item Description" value={itemDescription} onChange={(e) => setItemDescription(e.target.value)} />
      <button onClick={addItem}>Add Item</button>
    </div>
  );
};
 
export default App;

3. Run the Application:

  • Start both the Express.js server and the React front-end.
# Start the Express.js server
node server.js
 
# Start the React front-end
npm start

Access the application at http://localhost:3000 (opens in a new tab).

Conclusion:

Building a complete web application using full-stack frameworks involves creating a seamless connection between the front-end and back-end components. The MERN stack, consisting of MongoDB, Express.js, React, and Node.js, is a powerful choice for developing modern web applications. In this example, we set up an Express.js server to handle API requests and interact with a MongoDB database, while the React front-end communicates with the API to display and add items. This serves as a foundational guide for creating robust full-stack applications with a consistent and integrated development environment.