# The Interpretation of Full Stack Development

This post will explain full-stack web development and how to become a full-stack developer. I hope you enjoy it as much as I did. 😊

### What is Full-stack Development? 

In simple terms, this refers to the Creation of web applications' front end (client-side) and back end (server-side) elements and DevOps.

### Who is a Full-stack web developer?

A full-stack web developer is a developer or architect who can deal with both the front and back finishes of a product application, which implies they can easily take on projects requiring information bases, client confronting sites and even customer joint effort all through the planning cycle.

They are also well-versed in both business logic and user interface, allowing them to get their hands dirty and advise and collaborate on strategy.

I previously mentioned the frontend (client-side) and backend (server-side) of a web application. But, first, you'll need to understand what that entails. 👇👇👇

### What is Frontend Development(client-side)?

This skill set entails presenting your website and how it is viewed in browsers and mobile devices. In addition, a frontend developer must be familiar with HTML and CSS and the client-side scripting language JavaScript.

A frontend developer aims to build an interactive platform that allows visitors to communicate with one another in real-time and a platform that provides and receives information. A frontend developer's range of abilities may likewise incorporate client experience and UI plan, which can assist a group with picking the best procedures for introducing and obtaining information.

Here is a sample snippet of HTML, CSS, and javascript.

#### HTML snippet
```
<!DOCTYPE html>
<html>
<head>
    <meta charset='utf-8'>
    <meta http-equiv='X-UA-Compatible' content='IE=edge'>
    <title>Sample</title>
    <meta name='viewport' content='width=device-width, initial-scale=1'>
    <link rel='stylesheet' type='text/css' media='screen' href='main.css'>
    
</head>
<body>
    <h1>I am a headline made with HTML</h1>
    <p>And I am a simple text paragraph. The color of this text is styled with CSS. Click the button below to remove me through the power JavaScript.</p>
     <button>Hide the text above</button>
    <script src='main.js'></script>
</body>
</html>
```

#### CSS snippet (`main.css`)
```
body {
	font-family: sans-serif;
	text-align: center;
	padding: 3rem;
	font-size: 1.125rem;
	line-height: 1.5;
	transition: all 725ms ease-in-out;
}

h1 {
	font-size: 2rem;
	font-weight: bolder;
	margin-bottom: 1rem;
}

p {
	margin-bottom: 1rem;
	color: green;
}

button {
	cursor: pointer;
	appearance: none;
	border-radius: 6px;
	font-size: 1rem;
	padding: 0.75rem 1rem;
	border: 1px solid navy;
	background-color: blue;
	color: white;
}
```
#### JAVASCRIPT snippet (`main.js`)

```
$('button').on('click', function() {
	$('p').css('opacity', 0);
});
```
%[https://codepen.io/olanetsoft/pen/VwpjVMp]

#### Client Software(FrontEnd)
HTML, CSS, Bootstrap, JavaScript, ES5, HTML DOM, JSON, XML, jQuery, Angular, React, Vue, Backbone.js, Ember.js, Redux, Storybook, GraphQL, Meteor.js, Grunt, Gulp etc.

![Alt text of image](https://d33wubrfki0l68.cloudfront.net/0c1f2b3a7db2b90f7c24915eb8b1223bbd80d3e5/d5c2a/static/b87971fa3d35839c9b909d9dffc76dc9/frontend.png)[*image credit*](https://yashints.dev/blog/2019/05/09/keeping-up-with-frontend)

### What is Backend Development?

It refers to the server-side development of a web application, focusing on how the website works. It is responsible for the Creation, editing/update, and recollection of data and some of the processes most often associated with backend development.

The backend (sometimes known as "server-side") is the part of a website you don't see. It's in charge of storing and organizing data and ensuring that everything on the client-side functions appropriately. The backend interacts with the frontend, sending and receiving data that is presented as a web page.

Below is a snippet of how a simple NodeJS Backend code includes a rate limiter implementation and socket.io integration.

```
const express = require("express");
const path = require("path");
const http = require("http");
const socketio = require("socket.io");
const apiRoutes = require("./src/routes");
const rateLimit = require("express-rate-limit");
const { PORT } = process.env;


const app = express();
const server = http.createServer(app);
const io = socketio(server, {
  cors: {
    origin: "*",
    methods: ["GET", "POST"],
  },
});


// Limit request from same IP
const limiter = rateLimit({
  max: 100,
  windowMs: 60 * 60 * 100,
  message: "Too many requests from this IP, please try again in an hour!",
});

app.use("/api", limiter, start(io), apiRoutes);
app.use(express.static(path.join(__dirname, "public")));

io.on("connection", () => {
  console.log("Socket Connection Established...");
});

server.listen(PORT, () => {
  console.log(
    `::: server listening on port ${PORT}. Open via http://localhost:${PORT}/`
  );
  databaseConfig();
});

server.on("error", (error) => {
  console.log(`::> an error occurred in our server: \n ${error}`);
});

```

A typical software application comprises three components: the front end, the back end, and the database.

#### Server Side Technologies(Back-end)
PHP, ASP, C++, C#, Java, Python, Node.js, Express.js, Ruby, REST, GO, SQL, MongoDB, Firebase, PaaS (AWS, GCP, Azure, and Heroku), and more programming languages.

![Backend image](https://content.techgig.com/thumb/msid-67337479,width-860,resizemode-4/Top-5-programming-languages-for-backend-web-development.jpg?94297)
[*Image credit*](https://content.techgig.com/top-5-programming-languages-for-backend-web-development/articleshow/67337449.cms)


## FrontEnd vs BackEnd vs Fullstack

![Backend image](https://glints.com/sg/hired/wp-content/uploads/2018/08/2_developer-infographic-01.jpg)

I hope you now have a better understanding of full-stack development.😉


# The FULL STACK system in a single picture

![Full stack image](https://usercontent.one/wp/daraoladapo.com/wp-content/uploads/2020/09/full-snack-dev.jpg)
[*Image credit*](https://daraoladapo.com/full-stack-net-development-guide/)

## Popular Stacks:

#### MongoDB, Express, AngularJS, and Node.js make up the MEAN Stack.

The MEAN stack is a JavaScript-based full-stack framework for building online applications. 

- MongoDB - document database
- Express(.js) - Node.js web framework
- Angular(.js) - a client-side JavaScript framework
- Node(.js) - the premier JavaScript web server


#### Django Stack: Django, Python, and MySQL as Database.

The Django stack is a Python-based full-stack framework for building online applications. After the three primary technologies that make up the different layers of the pile.

- Django - a high-level Python framework
- Python - a programming language
- MySQL - relation database


#### MERN Stack: MongoDB, Express, ReactJS, and Node.js

The MERN stack is a JavaScript-based full-stack framework for building online applications. After the four major technologies that make up the different layers of the stack.

- MongoDB - document database
- Express(.js) - Node.js web framework
- React(.js) - a client-side JavaScript framework
- Node(.js) - the premier JavaScript web server


#### MEVN Stack: MongoDB, Express, VueJS, and Node.js

The MEVN stack is a JavaScript-based full-stack framework for building online applications. 

- MongoDB - document database
- Express(.js) - Node.js web framework
- Vue(.js) - a client-side JavaScript framework
- Node(.js) - the premier JavaScript web server


#### MERGN Stack: MongoDB, Express, ReactJS, GraphQl, and Node.js

The MERGN stack is a JavaScript-based full-stack framework for building online applications after the five major technologies that make up the layers of the system.

- MongoDB - document database
- Express(.js) - Node.js web framework
- React(.js) - a client-side JavaScript framework
- GraphQl(.js) - a query language for your API
- Node(.js) - the premier JavaScript web server


#### LAMP Stack: Linux, Apache, MySQL, and PHP.

The LAMP stack is a PHP-based full-stack framework for building online applications after the four major. These major technologies make up the layers of the system.

- Linux - server for modern operating systems 
- Apache - a programming language
- MySQL - relation database
- PHP - a powerful server-side programming language


#### Conclusion

I hope you find this helpful! Don't forget to share with others.

You can also get in touch with me on [Twitter](https://twitter.com/olanetsoft).

Thank you 🎉

