Expose

Expose servers on localhost with a public URL

Visit Website
December 22, 2021 #1 on google for "node productivity"

I wrote an article, "Six Ways To Drastically Boost Your Productivity As A Node developer".

I have no experience with SEO and didn't do any SEO optimization or marketing for this article apart from posting it to reddit, medium and twitter.

So I'm pretty stoked that it reached #1. It'd be great to know what I did so I can try doing this again. Maybe some SEO experts can chime in?

Nevertheless, the article got fairly popular and is now at the #1 position on google if you search for "node productivity".

I've set myself a goal of positing one article every couple of weeks.

If these articles keep doing well, I might end up compiling them into a book and selling that as its own product.

Comment

September 29, 2021 First paying customer

I was checking gmail one day and noticed an email from Stripe mentioning that a payout is on the way to my bank account.

I logged in and saw someone had subscribed to expose.

While its only one customer, you have to start somewhere.

I re-used a Stripe based billing system I created for another one of my startup ideas which didn't make it to handle the subscriptions, so it was possible to subscribe using Stripe from day one.

Comment

July 16, 2020 Finished MVP

It took a couple of weeks of non-stop coding nights and weekends, but I rolled out expose.

I learned a lot about Websockets and the low level details of the HTTP/HTTPs protocol. I had to use node's core http module to get to the raw requests. That way the service can handle all types of requests such as text, html, json and binary data like images.

More common, easier to use http clients like axois and fetch did too much manipulation of the requests (like JSON and header preformatting) so I was unable to use those.

As a part of this, I built my own Websocket "Framework" where all messages between the client and server are sent as JSON. Binary data is base64 encoded so it can be sent as plain text in JSON. This allowed me to create TypeScript interfaces for every request type.

Both the client app and server are built with TypeScript which compiles to JS and runs with node.

Comment

About

I noticed fellow engineers using a tool similar to expose which also gets you public URLs. They used it for a bunch of normally hard to test stuff like oauth callbacks. So I challenged myself to build my own product.