frontendjobs.ch is a classic side hustle out of personal need. I was on a job hunt for a frontend position and was sick of checking several websites daily.

The story

During the global pandemic in 2020, I was switching careers and, therefore, on a job hunt for a frontend position. It was time-consuming to check several job platforms and common platforms like Stackoverflow. I thought it would be a good learning to build a little app that scrapes all the websites and filters the jobs directly. Where possible, I reverse-engineered the APIs of the platform directly and used them to grab the data. For server-rendered apps, I use puppeteer, a headless chrome for NodeJs, to scrape the pages and grab the data I need. Update February 2022 I migrated the backend to Netlify, as they launched scheduled functions in February. This feature is amazing and simplifies the project big time. During the rebuild of the backend, I also moved the database away from Firebase towards Supabase, an open-source alternative. I wanted to build something with Supabase, so I completely moved away from Firebase. Obviously, I also moved the static hosting to Netlify, so the whole project is now deployed directly to Netlify, hosting, and functions. This simplified the setup and improved DX a lot.

When I finished the project, I realized that this dataset could be beneficial for other people, so I built a small frontend to display all the jobs.

The basics

Web scraper built with NodeJs and Puppeteer running as serverless functions on the Firebase Suite. Static Nuxt app hosted on Vercel to display the jobs. Update February 2022 Web scraper built with NodeJs and JSDOM running on Netlify scheduled functions. Static Nuxt app hosted also on Netlify.

Technologies and services

Services
  • Firebase functions – scraper, cron, and API proxy
  • Firebase Firestore – database
  • Vercel – serverless API for the frontend and static hosting
  • Netlify – static hosting for the frontend (from February 2022)
  • Netlify scheduled functions – web scraper, data collection
  • Supabase – Database and Restful API
Technology
  • NodeJs
  • Nuxt / Vue

What's unique about the project

Web scraper with a cron job for regularly updating the database and automatic deploy the static site when new data is available.

The future

The next feature I want to implement is job detail pages directly on the website. Up until today, I have linked to external platforms. This would also improve SEO big-time.