Full-Stack Development in a Nutshell
Tags: fullstack, webdev, beginners, discuss
Published: 2021-11-24 17:44:49


# So what even is "Full-Stack Development"?

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/43xe8xya9zs8qer4jldt.jpeg)

*Full-Stack* is a term used to define a style of development that includes working on an application front to back, with everything in between how an application looks and a user interacts with it (Front-End) and how that application manages the data needed to do what it does, and how the "magic" happens behind the scenes (Back-End)

This role is usually broken up between a *Front-End* Developer, who 
- focuses on the look and feel of an application
- makes requests to the back-end for data

while the *Back-End* Developer focuses on 
- creating / managing the database
- crafting responses to be returned to the front-end

As a Full-Stack Developer, we will need to complete certain tasks to ensure our application is covered front to back and has everything it needs to function properly.

The flow of data in one of our applications will be handled in the following way
- A User will visit our applications front-end, and will do some form of action, for example, try to log in or create an account.
- When they hit submit to sign up, a POST http request containing data from our sign up form on the front-end will be sent from our front-end to a specific API endpoint in the back-end server that is running.
- The back-end will receive the http request at its endpoint, and execute the action to create a new user in the database with the passed in data.
- If everything goes well with that transaction, then the user interacting with the front-end will be redirected to the login page to log in with their newly created account.

The flow of data will be similar for most of not all other actions a user will have with our application.

## A list of some skills needed to complete a full-stack application might include:

#### Front-End
* HTML/CSS, JavaScript
    - HTML will be the skeleton of our front end, CSS will put a dress on that skeleton to make it look pretty, and JavaScript will make that skeleton dance!
* How to make http requests
    - This is how we will interact with our back-end to get data to display
* Maybe a front-end framework like React.js/Next.js
    - This will help us build rich, immersive websites by allowing us to build more efficiently / quickly with our HTML / JavaScript skills
* Drawing things out / wireframing 
    - This is actually useful for both planning out your front-end page structure / layout as well as your database table structure / relationships in your back-end

#### Back-End
* Ruby on Rails, Java / Spring, Python, JavaScript, etc
    - This will be what we write all the logic for our database with
* Any kind of SQL (PostgreSQL, SQLite, etc)
    - This will be used to create/ manage our database
* Data Structures / Algorithms
    - Knowledge in these areas is necessary for being able to efficiently search and sort through our data
* Model View Controller patterns
    - MVC comes in handy when orchestrating the logic in our back end that responds to http requests, and dictates what logic should be executed upon receiving a request.
* Object Oriented Programming
    - OOP is useful to know when defining our database models, and allows for abstraction with topics like object classes and inheritance (this can also be used in the front end!)

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/acph52d7x5dmye5ct3ya.jpeg)

And that is a general overview of Full-Stack Development!