July 2, 2018

Super happy to launch my first side project!

Yesterday I launched my first side project, Job Buddy (https://jobbuddy.app), a web app to track all the interesting job offers you find across the web (job boards, aggregators or companies career pages).

I'm kinda new to web development so it's still a primordial implementation, but I'm quite happy of the result given my experience on the matter.

The stack is the following:

  • Web app: built with ReactJS

  • Backend: built with NodeJS

  • Chrome Extension: built with ReactJS

  • Database: Firestore (from Firebase)

And this is how everything is hosted:

  • Web app: Firebase.Hosting

  • Backend: Google Cloud Functions

  • Chrome Extension: Chrome Web Store

  • Database: Firebase.Firestore

I'm thinking of writing an article on Medium on how to bootstrap a web project at basically no cost upfront as Job Buddy, up to now I've spent just 18,5€ (14€ for jobbuddy.app on Google domains and 4,5€ for the Chrome Web Store fee).

Job Buddy is completely free of use, I really hope it can be helpful to others. I'd be really happy to have your feedback or comments on how to improve it!

Thanks :D


  1. 4

    Thanks for sharing! I like the look and feel of your home page. You are off to a great start. Let me know if you would like a second opinion on the wording/grammar for the blocks of text on the homepage.

    1. 2

      Thanks for the feedback! and yes I'd be glad to have a second opinion on the wording/grammar :D

      1. 2

        Just sent you an email. Hope it helps!

        1. 2

          Thank you! What embarrassing typos I've made :D I've updated all the blocks with your suggestions, I'm deploying it right now! Thanks again!

          1. 2

            You're welcome! Keep up the good work and best of luck with your project!

            1. 1

              Thanks :D

  2. 2

    Great work Tommaso!

    I wish I’d had this a month ago when I was actively searching for a new job as a front-end engineer. As it was, I used a Trello board, and that worked, but wasn’t ideal.

    Per your request for feedback, I've put together a UI/UX review of your landing page:

    https://bit.ly/2KJkRXY

    All the best,

    Caleb Peterson

    Certified Usability Analyst

    Front-end Engineer

    1. 2

      Wow Caleb, incredible review. I'll definitely work on what you suggested! Thanks for sharing the feedback, really appreciated!

      1. 2

        Glad to help!

        1. 2

          I've implemented almost everything you suggested :D already deployed. If you wish to check the new look you may need to empty the cache! Thanks again

          1. 1

            I should have an opportunity late today or tomorrow. Looking forward to seeing your updates!

  3. 2

    Nice and clean!

    1. 1

      Thanks :D

  4. 2

    Love firebase. Free tier is generous and it's nice not having to manage infrastructure.

    The realtime Database is a great way to coordinate web clients and workers or between web clients themselves but you do have to structure your DB carefully to avoid performance pitfalls. Likewise, DB Rules are a way to safely push more of the functionality into the web client but it's easy to mess them up (I have several times). Luckily you only need a few rules.

    1. 1

      Yeah firebase is great, the only thing I'm scared of is cost as the user base grows. I mean, in a day I burned 1GB of Firebase.Hosting (out of the 10GB free plan), if I had 10x the user what would have happened?

      1. 1

        Either you have a ton of users already or you have a lot of large assets there. If it's the first, then hopefully you can afford it. If the second, then maybe you should move some assets to Firebase Storage or some other.

        To be fair, Firebase, GCP, and S3 storage egress charges appear to be all pretty much in the same ballpark so you'd end up paying one way or another.

        1. 1

          I've found on google that a lot of those data are SSL handshaking and stuff. That pisses me off a bit tbh

          1. 2

            You could connect Cloudflare CDN in front of firebase so you won't pay anything.

            Cloudflare CDN is freemium (you only pay to get access to more options but CDN is free) and very performant I use it everywhere to avoid GCP / AWS costs while still using their services.

            I have a website with 100s thousands of photos and only paid some cents to AWS S3 for the first download (then it's cached in Cloudflare CDN). Same applies to Firebase which I use all the time.

            1. 1

              Wow @255kb interesting to reduce pricing! I'll try it out, it can be a game changer! You suggest to go with the cloudflare free plan?

              1. 1

                yes it's definitely enough and the performances are excellent (really excellent). I use it everywhere but you can see it live here: http://sneepets.com It's an old project I don't maintain. But try to scroll on the homepage it's blazing fast.

                All images get uploaded by users and stored in AWS S3 in 3 formats and then served through the CDN. So I pay 3 PUT events (no ingress bandwidth) + 1 GET (the first one) and the corresponding egress bandwidth. Then all subsequent calls are going through Cloudflare.

                So I don't pay anymore.

                It's not very complicated to set up. You need to replace your nameservers with Couldflare's URLs and manage your DNS with Cloudflare (with this you also benefit from 1 minute DNS propagation which also changed my life <3). Then some configuration and also cache header tuning.

                Because of course if S3 (or GCP or Firebase) returns files with a short "Cache-Control: max-age=" Cloudflare will redownload every time the cache expires. So be sure to put years for static files (which you can also do with JS bundles as they have most of the time a unique hash in their names).

  5. 2

    Site looks great, will report back on how it functions after I use it.

    I would be interested in that Medium article about bootstrapping a web project such as this.

    1. 1

      Thanks, I'd be glad to have a feedback on how it functions :D I hope to publish the medium article today, max tomorrow :D

      1. 1

        I'm wondering what the point of leaving up the website cards that don't match the input is? For example when I type in junior developer in los angeles and click the angellist card, I just get the angellist homepage.

        If you are going to keep the unmatched cards in - another suggestion would be to make the green circle signifier a little more obvious, perhaps by turning the entire card green or having a green border. Wasn't sure exactly what the green dot meant at first (and still might not actually). Just my two cents

        1. 1

          Thanks for the feedback Alex! Yeah the green dot means that you can access the related website directly with those keywords (job title and/or location). It's mainly due to the fact that those use url parameters, so I can craft them on JobBuddy. Probably it would be better to change the "highlight" method or disable the ones that can't offer that feature.

  6. 2

    This is a great start! Well done. I'm quite a way behind you in terms of learning React and Node, but I like what you've done here. Very useful and good project!

    1. 1

      Thanks! My goal was exactly to build something useful for people :) Anyway I'm still new to React and Node, I'm still learning, this is my first real project using this stack :D I think the fastest way to learn is to build something!

  7. 2

    If you write the medium article I would be delighted to read it :)

    1. 1

      I will! Today I wrote a draft, need to beatify it a bit and then I’ll publish 😄

  8. 2

    This is interesting. I'm working on something similar for housing at the moment.

    1. 1

      Cool! I think it's definitely applicable! I'll share (probably tomorrow) a post on the architectural stack behind Job Buddy, feel free to check it out :D