Share your Web Projects Easily
Tags: codenewbie, webdev, devops
Published: 2020-12-24 09:08:15

#### This article is about sharing your localhost as a link that anyone can access. We will achieve this using  [ngrok](https://ngrok.com/product)
![what-is-localhost.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1608791381259/pblNqNYyd.png)

As a **Web Developer**, whatever you work on has to be shared as a link that others can access. Irrespective of whether you are a *Front-End* or a *Back-End* dev, a *MERN Stack* or a *LAMP Stack* dev, I am assuming you know the importance of **https://localhost/**. 

#### What if I told you that the work on your localhost can be shared with others in a few simple steps?🤯

There are several methods of deploying your project on a server as a shareable link.
But the problem with this process that you have to-

- *Commit your code* and *Push it to an external server* before anyone can see your progress.
- If your organisation follows DevOps Pipelines. Your colleague will only be able to test your code after the next build is ready.(Assuming there is a case of "It works on my machine")
- As a **#CodeNewbie** the process is even more tiresome as you have to learn all about git, GitHub, Heroku, AWS, etc. 

The answer to all of these Problems is sharing your work without committing the code and pushing it to an external server. This is possible by *tunneling* your localhost on the internet using *ngrok*

**Ngrok** exposes local servers behind NATs and firewalls to the public internet over secure tunnels.

### > Lets get started
- Download from  [here](https://dashboard.ngrok.com/get-started/setup) 
- Unzip the downloaded folder
- Run the ```ngrok.exe```
- *Log in* to your account and head to the ```Dashboard```
- In the .exe file Command ```./ngrok authtoken Your_Authentication_Key```
- Now Fire it up ```./ngrok http 3000``` if your project is hosted on http://localhost:3000/
- The terminal must look like this now-
![8d090eb7-d978-4824-8d29-ffc02751a359.jpg](https://cdn.hashnode.com/res/hashnode/image/upload/v1608798231942/eQvx-2SlA.jpeg)
- This link you see can be shared with others to see your work.

So this link can be accessed by anyone and will work as long as you run the program on your computer.
### > Why should you use **ngrok**?
They have very good documentation, easy to use, and have a lot of uses that can help you with many projects that you might work on.

![Screenshot 2020-12-24 142724.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1608800319362/SUI55OPHp.png)

### > Use Case
I have been a Web Developer both Front-end and Back-end. I currently work in DevOps. This is a major gap that I have seen. 
There is always a case where, "It works on my machine ¯\_(ツ)_/¯ ". Yes, DevOps solves this problem majorly, but for minor changes triggering the CI/CD pipelines seems like a waste of resource to me.

Here are some scenarios, I have seen this to be helpful:
- Front end developers wanna present their work to clients/managers before committing the work.
- Students in a Hackathon can use it share their project easily. Not all student have credit cards to signup for AWS or similar cloud services.
- Back-end developer has a Server with a local database. They use it make sure with the front-end team can correctly consume the data.(Did at work!)
- SSH to a Raspberry Pi
- Test and build a Web-hook integrations
- Applications with web-sockets, those which have to be running on at least two ends to be tested.

### > Conclusion 
This method seems like a good bridge to help out both front-end and back-end developers.
There can be doubts on it's security and privacy concerns. And Yes, those are point of concern. But the platform is still building. There are many BETA features and also a few paid services.

Overall, an easy and short alternative to deploying your work on the internet.