If you’ve built a few side projects over the years, chances are you’ve ended up using a few domains like this: something-super-cool.herokuapp.com. And if you’re at all like me, you hate using those domains, because it just feels kind of impersonal to use a subdomain of a hosting site like Heroku or Elastic Beanstalk for your project.
So naturally, you look up pricing to see how much it would cost to buy your own domain. It’s only $15 a year! That’s not too bad. The thing is this project isn’t that important, and you have 15 other equally unimportant projects using a herokuapp subdomain.
So you do a little math.
15 projects times $15/domain = $225.
That's too much.
You stick with the herokuapp subdomain.
But what if there was a better way?
What if you just bought one side project domain, and used subdomains of it for all of your personal projects? Kind of like an online ‘repository’ site for all your personal projects. Something that let you organize projects like this:
- project-one.mysideprojectsdomain.com
- project-two.mysideprojectsdomain.com
Well, this might sound great, but if you’re the type of person who spends a majority of your time on the development side of things and rarely touches the operations side, your experience with setting up domains probably looks a little something like this:
- Google how to setup a domain.
- Read an article on how to setup a domain.
- Copy exactly what that article says.
- Visit new domain and see this:
- Spam refresh for 20 minutes.
- Repeat steps 1 - 4 with a slightly different article.
- Spam refresh for 20 minutes.
- Repeat steps 1 - 4 again with a new slightly different article.
- Spam refresh for 15 minutes.
- It worked!
Once you see your site finally up and running, it’s usually followed by an overwhelming sense of relief. And that sense of relief is followed almost immediately by a decision that you will never, for as long as you breathe, touch the settings for that domain again.
I know because up until three months ago, this was my exact experience with setting up domains.
But recently I’ve been getting into the operations side of things, and guess what? Setting up a domain is actually easy. Like really easy.
At the end of this article I’ll give a quick step by step guide for setting up a Heroku app with a Route 53 subdomain, but first, I want to take a look at a more practical reason why you should consider setting up a side project domain.
A practical reason to setup up a side project domain.
It’s not just about having a pretty URL.
Using a hosting services subdomain also couples your app too tightly with that service.
Suppose the unthinkable happens, and one of your side projects actually takes off... you wake up one day and all of the sudden your app has hundreds or thousands of visitors. And not just that, but people are tweeting about it, and blog posts are being written about it.
Now you start thinking that maybe your app has a real shot at being something big, and you know the hobby dyno on Heroku won’t be enough to handle traffic for long, so you decide to move your site to Google Cloud.
But wait… all of those tweets and blogposts… they were all linked to your Heroku subdomain… and you don't want to lose all that traffic…
If only you had used a side project domain!
Truthfully there are other ways around this problem. You could setup a simple app on the Heroku site to redirect traffic elsewhere, but even then you’d have to pay $7 a month just to keep that app up 24 hours a day.
It’s just easier to use a side project domain, and with the low prices of domains these days it should be a no brainer.
Plus, if you decide one day that your app has grown enough and you want to get a unique domain for it that isn’t attached to your side project domain, it’s extremely easy to redirect traffic from one domain to another.
Alright, now that you're convinced, here's Seven Steps to Set Up a Side Project Domain with Route53 and Heroku.
Thanks for reading
I hope you enjoyed this article! Feel free to ask any questions or leave your feedback in the comments below!
Top comments (21)
Hey Josh, great post!
Just a quick tip. I noticed that you link to the Seven Steps... at the end of your post.
You could also edit both this post and the other to include "series: whatever name you'd like for your series" in the front matter. This'll connect your two posts with a cool little dot scroll option at the top of each post that lets the reader easily flip between posts in the series.
Umm yeah, no idea what this option is actually called, so chose to call it a "dot scroll" ... but anyway, it looks like this:
... in my posts here & here.
Of course, it's not necessary, just a nice to have!
I love this! Thanks for sharing!
Is there anyway to control the order? I'm assuming it's just based on the date, and apparently I posted the wrong one first
So yep, your hypotheses is correct — works based on the published date!
Ahh yeah I figured... now I know for the future!
Hmmmm... honestly, I've not tried to fiddle with that yet. I'll see what I can find out and let ya know. :-)
Great article! I do have a few questions.
Thank you for your time!
Search around for multitenant architecture or just multitenancy. Domain-wise, there are multiple ways to do it. AWS has an SDK where you can dynamically add new DNS records to Route 53. Or you can create a wildcard DNS record so a web server can answer to
<anything>.mydomain.com
-- any subdomain works without having to create a new DNS record.For data security, you have to associate a tenant ID to each user account anyway, to make sure they can only access their own data. The subdomain things is really for display/customized-link purposes when using multi-tenancy.
You can also deploy multiple copies of your app instead of using multi-tenant-aware system, but that can become difficult to manage as you add more customers.
I’ll definitely do some research. My intention at first was to assign a copy to each user.
Now I have more options. I shall see.
Thank you!
It sounds like what you're describing might be outside of the scope of this article. Side project domains are a great way to showcase your live projects to potential employers or clients, or to setup small projects that you don't have enough traffic yet to justify buying it's own domain. The keyword in that last sentence is 'live projects', the end goal is to give users a way to access the site or app on the web (think Twitter or Youtube). In your case, it sounds like the end goal is to sell developers the code that they can use to build 'instances' of your app, which doesn't make as much sense to use a side project domain for. Let me know if I misunderstood what you were saying!
I haven't worked a lot with node, but I always recommend using cloud service providers as opposed to traditional hosting services, so I'd look into Heroku, AWS, Google Cloud, or Digital Ocean. Heroku's probably best if you want to keep things simple!
Sorry! I was in a rush, so I couldn't write what I meant properly.
The end goal is to sell my app to small companies. Well not really to sell it, but make them use my app.
I'll take another example. Let's say that I have built an invoice app which will help all the groceries stores in my town. This is what I meant by
different instances
. This implies that grocery store X will have different products than grocery store Y, but they would still use the same app that I built.So the final question is: If I want to have my app used by multiple users, I should make sure that for every app I use a different domain so the data won't get mixed up?
I'm sorry if I'm going too much beyond the scope of the article, I've been having this unclarity for a while.
Thank you once again!
Hello, have you figured out this, because I am also building something similar to this.
Please let me know how to do that
Thanks
-- So True. Last time i edited or even viewed the CNAME records when i first bought the domain. It's a inner fear that something will break.
Exactly! And the fear came for a good reason because whenever I used to mess with it, something usually did break.
Awesome article Josh! I actually had this problem for a long time, I didn't really like subdomains for my personal projects because they take so long to update, and then if I want HTTPS the service I'm using (Heroku, GitHub Pages, Netlify, etc.) has to provide it.
That's actually why I made Routepath (routepath.app). It's a hosted reverse proxy service that lets you route paths on your domain to different locations. I've been using it with my side projects for a couple of months now, and it solves all of my problems.
Agreed! I just had a similar experience as you described when I recently decided to move hosting providers. I'm really glad I took the plunge. If you are comfortable plopping down a decent amount of coin up front, it actually works out to about the same as a Netflix subscription for the first 3 years or so.
I also took the time to really research providers and have been very happy with Siteground (esp after godaddy), if anyone's looking for hosting, I highly recommend them: siteground.com/?referrer_id=7910825
Step 1 - 10 has deterred me from setting even a single domain. That experience can hurt. lolzzz
It scarred me for almost three years!
Am gonna follow through with the Route53 tuts
Awesome! Let me know if you get stuck on anything!
Been doing this for a while - I have like a dozen projects up on 4ty2.fun - also love that domain name :)
Just checked it out... you've got a lot of cool stuff on there!