The Building Process of a Website or Web App.
Tags: tutorial, webdev, codenewbie, devjournal
Published: 2021-01-27 20:47:31

So, you have a web project you want to start working on and have no idea how or where to start?
 
In this article, we will look at the *general building process of a website or web application*. This article can serve as a guide of how you can start and finish a website.

<h2>Table of contents</h2>

1. [The Application Overview](#overview)
1. [Design the application](#design)
1. [Decide on the technologies](#technologies)
1. [Set up the project](#setup)
1. [Development](#development)
1. [Test and Debug](#test-n-debug)
1. [Review the App](#review)
1. [Deployment](#deployment)

---

<h3 id="overview">The Application Overview</h3>

The application overview is essentially a *broad but yet simple high-level explanation of the application's reach and purpose*. The best way to imagine this is to think of a pitch where you outline the **problem** and the potential **solution** to it.

<h3 id="design">Design the application</h3>

Once you have a general working idea of the application, start working on the design. You can use tools like [Sketch](https://www.sketch.com/) or [Figma](https://www.figma.com/) to create an interactive design of the web application you have in mind and how it will address your problem. 

**Advantages of having a design:**
- Having an idea of the UI outcome saves time than to figure it out as you go.
- Saves money and resources by having to get feedback from yourself and others before development begins.
- Allows you to be creative and to come up with ideas that can help you stand out. 
- Helps you decide on additional tools you might need to tackle certain features.

Give yourself a little bit of time to design your project. The [development](#development) stage becomes a lot easier when you have a **blueprint**, a mock-up, to refer to when working.

<h3 id="technologies">Decide on the technologies</h3>

Yes! With a detailed application overview and design, you should be able to deduce the complexity and the needs of your application.

In Web Development. An application like a Todo List can easily be created by using HTML, CSS and JavaScript while an app like Netflix may require something more robust, a framework, like Angular, React or Vue to mention a few.

Some applications need to be in constant communication with the servers. Whereas, some may get by by handling the user data on the client-side. Understanding the needs of your application (having the overview and design) will help you to decide beforehand on what technologies to incorporate, which database to use or the deployment platform that will be best.

<h3 id="setup">Setup the project</h3>

Next, you can start preparing to develop the application. Before we start developing, we need to create an environment for the project:

- Creating a repository.
- Creating a project in your repository to track your development.
- Creating issues for the project, link them to your repository, assign them and link them to a milestone.
- Creating milestones, your timelines, like design, development and testing.
- Downloading packages and all dependencies.

<h3 id="development">Development</h3>

Aah, finally 😊 now you can start with your code. Recreate your design using your the coding languages you [decided](#technologies) on and your favourite tools. 

During this time, you will get to: 
- Spend a lot of time trying different ways to implement a feature.
- Follow best practices and conventions.
- Revisit your notes and take other short tutorials.
- Become a close friend of [Google](https://www.google.com/), [StackOverflow](https://stackoverflow.com/), [Youtube](https://www.youtube.com/) or [Grepper](https://www.codegrepper.com/).
- Create numerous branches and make several commits.
- Create Pull Requests and close issues.

<h3 id="test-n-debug">Test and Debug</h3>

This section is dismissed by so many. **Test, test and test your code.** Debug your code using [Developer Tools](https://developers.google.com/web/tools/chrome-devtools) in the browsers or any other tools. Make sure your application is not giving back errors, handling requests and data correctly.

<h3 id="review">Review the App</h3>

Take your application for a complete **test drive**. Pretend you are the user for a while, question everything and see how the application performs. 

Also, having an extra pair of eyes won't hurt. **Get a different opinion** from a mentor or a trusted friend.

Get help from a Third-Party, run your application through [Lighthouse](https://developers.google.com/web/tools/lighthouse). You can also do this during [development](#development) or [testing](#test-n-debug). Get a detailed report about your application's code to improve the app's performance.

If the review is critical and honest enough, you should be ready to present your idea to the world. 

<h3 id="deployment">Deployment</h3>

Finally, lets **show the world** what we have been working on for the past few hours, weeks or months. **Get a link** that you can share and people can start benefiting from all the work you put in. There are so many deployment platforms out there, among them are [Firebase](https://firebase.google.com/), [Netlify](https://www.netlify.com/) or [Heroku](https://www.heroku.com/).

---

Please, note that the tools, technologies and platforms mentioned in this article were just a short selection. There are so many technologies out there and discovering them is part of your adventure.

*Let me know what you think in the comments below.*