Before I start let me also say that I have a full-time job as a software engineer at apartmentlist.com(we are hiring btw) and everything I did for this project in the last 100 days, was mostly after work or on the weekends. I don’t think to be able to have a successful side project(at least for software projects) you have to necessarily quit your daily job and put all your focus and energy into your side project. Other than the obvious financial benefits, I think this had at least two other main benefits for me:

In my opinion, one of the most important and usually overlooked benefits of having a side project while working a full-time job is that very often, I learn something while I’m working on my side project and I immediately think I can apply that new knowledge to my projects at work, or vice versa. I cannot count the number of times this has happened to me and the benefits each one of my projects has gained as a result of this. I also think it’s nice to not think about your project all the time. Having a full-time job and interacting with other people at work helped me to take a break from my side project and clear my mind every day. At the same time, my side project had a similar effect on my full-time job.

1) Why WFH? 🤔

My criteria for picking my next project were simple. I wanted something:

That I can implement fast⚡. ️Re-using some of the components from my old projects helped a lot with this. That is already validated ✅. Meaning there are already other people doing similar projects. Since marketing wasn’t my strongest talent, I didn’t want to invent a new market and make it even harder for myself. That didn’t need me to create original content for it 🗄. So any listing idea where I collect data from different places and put them all together in one place could be a good candidate. (I need to write something about how the whole internet runs on spreadsheets one day). That I am passionate about 💖. Being able to work from anywhere I want, is one of my final goals. So I figured by building wfh.team and helping others in the remote community, I will learn a lot about remote working as well.

Remote Job Board checked all the boxes for me. So I started working on it.

2) MVP 🐣

different ways to filter jobs on wfh.team (Dark Mode)

To come up with the list of features for my MVP I looked at some other similar websites. I had a bunch of feature ideas in mind before I start, but I didn’t want to waste time testing every one of those features to find the most promising ones. I figured some of those other websites that were operating longer probably already tested some of those features. So I could get an idea of what worked and what didn’t by doing a quick research and looking at their launch history on Twitter, Indie Hackers, Product Hunt, and other similar websites. Here is the list of features I included in my MVP:

Remote job list(including filters, tags, and pagination) Remote job detail page Post a job (including checkout and stripe integration) User login and profile 👤(Reused this from another project). I needed this for users' favorite jobs feature. Subscribe box 📬(Even if you don’t have a newsletter at the time of launch, it won’t hurt to collect emails for future) Feedback form (Twitter should be enough for MVP, but this was easy to implement, so I added it) Dark mode 🌗(unnecessary but easy to implement 🤷‍♂) Responsive (You’ll be surprised to know how many people would complain about your website if it doesn’t work perfectly on their phones)

This 👆 might look like a long list for MVP, but considering the amount of code I re-used from my previous projects and also using the react components from the Material UI library, it wasn’t too hard to finish the items on this list in 2 weeks.

Checkout Page(Light mode)

Here’s a list of the main libraries, framework, and services I used for this project:

React + Redux for client-side

Material UI for my react component(highly recommended even for larger teams)

React Helmet for SEO

React Router

React Lazy Load

Webpack

Django + Django Rest Framework (DRF) for Server-side and API

PostgreSQL for database

Stripe for Payment Processing(Easy setup and best documentation I’ve ever seen)

AWS for hosting

AWS is a great product. There is basically an AWS service for anything you need from hosting your website to sending your newsletter and updating your database when an email bounces. Here is the list of main AWS services I used for this project.

Elastic Beanstalk + EC2 for serving the backend

S3 for serving the frontend and static files

RDS for hosting my database

Lambda for some email functionalities and performance optimization

Cloud Front for caching

Cloud Watch for logging

Simple Email Server for sending the newsletter and other email communications

Route 53 for DNS settings

AWS is my main (only!?) cost at this point. My AWS bills run somewhere around $50 a month which I’m paying for with some credits I received last year after being accepted into the YC Startup School program. So technically, my cost at this point is $0 🎉, but my credit is about to end and I have to start paying out of pocket soon.

Other tools I use on a daily basis include Google Analytics and Google Search Console. I also had Facebook and Twitter pixel tracking enabled on my website, but later I realized Google Analytics is enough for my use case and removed the other trackings to improve site performance. I recommend only add them if you need them. Keep your website fast and clean.

Hotjar is another tool I used to see how my users interact with the website. I even found a bug on my website in the signup flow after watching some of the recordings on Hotjar. I think it’s a great tool and I highly recommend it. They also have a great free package for personal use. Fun fact about Hotjar is that their HQ is in Sliema, a resort town on the east coast of the Mediterranean island of Malta 🏖 and guess what? They are 100% remote. I even posted a remote Product Designer job at Hotjar on WFH.

3) Launch 🚀

As I mentioned before I made a plan to announce my launch on some websites with some delay in between. I came up with a catchy title and made my first post on Hacker News a little after midnight.

Hacker News Launch Announcement

I went to bed and woke up around 8:00 in the morning hoping I would see some active users on my website on Google Analytics. But there was nothing! So I forgot about it. 2 hours later I checked again and Voila 🎉. ~900 new users visited my website. It was very exciting. I kept checking the number during the day and tried to answer all the comments on my post. Around 3000 people visited my website that day.

So I repeated the same process. This time on Product Hunt. To my surprise, I only got a few upvotes. It was very strange. It felt like people aren’t even seeing my post. Later I realized one of the most important things when you launch on Product Hunt is who Hunts your product. My mistake was I didn’t ask someone else with more credit in the community to hunt it for me and I just posted it myself. But now I know!

I did the same thing on Reddit (r/SideProject) and Indie Hackers. Reddit result was similar to Hacker News. Around 2000 people visited my website coming from Reddit. Indie Hacker, on the other hand, was similar to Product Hunt. No significant traffic. I still haven’t figured out why 🤔

Reddit Launch Announcement

One thing to remember though is that the majority of traffic from these websites is just a spike and it’s usually not sustainable. So you need to figure out a different way to send traffics to your website. Enters Twitter! 🐣

4) Automation 🤖

I knew from day one that if I only want to pick one social platform for posting Remote Jobs, it would be Twitter. I don’t exactly know why but for some reason Twitter feels like home for most Remote workers.

So I added an optional field in the Job Posting form for the company twitter account. I figured I don’t have many followers now, but most of the companies I post their job have many followers. So if I post their job on WFH Twitter account and tag them in it, I can gain some tweet impressions and profile visits as well. And it worked.

Twitter Analytics Tool. @wfh_team (Oct-2019)

I think so far I’ve only touched the surface of Twitter, and it still has lots of potentials to be unlocked.

For the first few job posts, I was posting on Twitter manually, but I realized that’s taking too much time and isn’t sustainable. So I wrote a bot 🤖 to do that for me. And I didn’t stop there. Later I added similar bots for Linkedin, Facebook, Reddit, and Telegram as well. This means every time someone posts a job on wfh.team, It will automatically be posted on all of these 👆 social media for free 🤑.

Adding these bots was one of the best things I did. It wasn’t easy since I had never done this part before. But I figured it out eventually. Now that I know how to do it, it will be easier and faster for my next projects.

Out of all the other platforms, I think Linkedin was the second most valuable for the purpose of this application. It also has a nice and simple Analytic 📈 section where you can learn more information about your visitors' demographics such as their industry or job function.

Linkedin Page Views

I still think there is so much more I can do with automation and bots. One thing to remember though is that even if you have everything automated, you still need some type of supervision to guarantee the quality of the content. I’m not willing to sacrifice quality for quantity. That’s one reason I don’t scrape other job posting websites to post jobs on my website. I like to verify the quality of every job post, or at least know it was posted by another human. Overall I think automation can be great if done right. The more high-quality content you create, the better the effect of automation.

5) Performance and Accessibility ⚡️

Accessibility and Performance have always been two of my top priorities when building a new project. I think about performance all the time. Whether it’s adding a new page to the website, the amount of data on the API response payload, lazy loading images or fonts, or even the size of SVG files. I have done lots of work in that area in the past both on my side projects and at work and I keep learning new things about how to improve performance every day mostly thanks to web.dev, JavaScript community on Twitter, and great work by people like Addy Osmani. 🙏

The main tool I use to keep track of my performance improvement after every change is Lighthouse. When I first launched my website, my performance score on Lighthouse was somewhere around 50/100. Today it’s at 78/100. I will continue to make changes until I reach 100/100 for every page.

Lighthouse Score for https://wfh.team Homepage

Here are some of the things I did to get to this score:

Native Lazy Loading coming to Chrome

I also try to upgrade all the packages and libraries regularly and stay up to date to get the latest features. I personally like to do this manually every couple of weeks and often read the release notes to make sure there are no breaking changes. If you prefer to automate this part there is a great tool called Dependabot. It will automatically create pull requests to keep your dependencies secure and up-to-date. Dependabot got acquired by Github recently and is now free of charge. 💰

For accessibility, I use this chrome extension from Deque called Axe. It’s a great tool. It helps you find all the accessibility issues on your website and then it tells you how to fix them. They also have a Pro version that includes some extra features and is currently free for a limited time. 💸