loader image

Senior Backend Software Engineer

Software Engineer for Firebase Project with NodeJS, Javascript, Typescript

This mini project contains a simple Firebase project written in Typescript. The heart of this project is to create a service to downscale an image. It is meant to be an evaluation project in order to assess your skills for a bigger project (minimum 3 months).



Image downscale challenge

Example of the request



{

  imageUrl: "https://upload.wikimedia.org/wikipedia/commons/3/39/Lichtenstein_img_processing_test.png",

  scaleFactor: 0.5

}

Requirements:


  • validate the body to the incoming request

  • imageUrl not null and must match a url format

  • scaleFactor must be between 0.01 and 0.99

  • download image to a temporary folder

  • scale image by the given factor

  • the response must contain the scaled image as file

  • make sure to delete all downloaded files

  • Authentication Challenge

  • The project uses Firebase Authentication





Requirements:



make sure that downscaleImage service does not handle requests of anonymous users

throw an exception if the use is not authenticated

Firestore Challenge

Requirements:



store each raw requests to firestore as a document

partition the requests by user and store the documents at this location:

'/users/{userID}/requests'

Firestore Security Challenge

In this challenge you will need to adapt the firestore.rules file



Requirements:



users can read and write to their private document and subcollections under '/users/{userID}'

deny access to any other users

Storage Challenge

Example of a request with the upload flag



{

  imageUrl: "https://upload.wikimedia.org/wikipedia/commons/3/39/Lichtenstein_img_processing_test.png",

  scaleFactor: 0.5

  upload: true

}

Requirements:



check if the request contains the upload flag

upload the scaled image to Firebase Storage if the flag is set to true

return the url of the image on Firebase Storage

adapt the storage security rules

Bonus

add Unit tests infrastructure

add Unit tests for downscaleImage

Rules

Create a repo on Github or Bitbucket and push this project (Don't fork!)

Make commits as often as possible! (We want see what you do and how you do it)

When you finish, send us the link to your repo by email

Please don't spend more than 4 hours on it!

Why we use coding challenges to interview developers

Hiring is one of the most time-intensive and critical processes. We know there are numbers of different approaches on this (and some pretty passionate opinions about it) but this approach works for us. We first start with a coding challenge (like this one) in order to quickly evaluate the coding level of the candidate. Depending on the results of this challenge, we will invite you for more thorough interviews such as cultural fit and more technical knowledge. Recruiting is a mutual process. Feel free to ask us any questions as well. Good luck!



What we want to evaluate with this coding challenge::



Can you write any code? Basically, we need to see if you can write any code at all. We believe that you can. Still, there are many wantacoders out there and it's difficult to tell from a short description only. Moreover, you’d be surprised how many candidates fall short when it’s time to put the cursor to the editor.



This is a pre-screening and we keep it really short. 1-2h should be fine for a skilled programmer to complete the task. That's the only code you have to write. No online-challenges, coding puzzles or similar... If we are happy with the result, we would like to invite you for further interviews on a personal level.



We know at some companies, it can be frustrating to send in coding challenges and never hear back from them anymore. That's not how we work and think! So, you will get a feedback from us, no matter if we want to continue with you or not.


Position

Backend Developer


Must have Skills

  • Node.Js

    Beginner

  • Typescript

    Beginner

Client Payroll

Up to 200 K/Year USD (Annual salary)

Fully Remote

english - Basic

Languages
Cancel
Cancel

Active

Skip

Senior Backend Software Engineer

Software Engineer for Firebase Project with NodeJS, Javascript, Typescript

This mini project contains a simple Firebase project written in Typescript. The heart of this project is to create a service to downscale an image. It is meant to be an evaluation project in order to assess your skills for a bigger project (minimum 3 months).



Image downscale challenge

Example of the request



{

  imageUrl: "https://upload.wikimedia.org/wikipedia/commons/3/39/Lichtenstein_img_processing_test.png",

  scaleFactor: 0.5

}

Requirements:


  • validate the body to the incoming request

  • imageUrl not null and must match a url format

  • scaleFactor must be between 0.01 and 0.99

  • download image to a temporary folder

  • scale image by the given factor

  • the response must contain the scaled image as file

  • make sure to delete all downloaded files

  • Authentication Challenge

  • The project uses Firebase Authentication





Requirements:



make sure that downscaleImage service does not handle requests of anonymous users

throw an exception if the use is not authenticated

Firestore Challenge

Requirements:



store each raw requests to firestore as a document

partition the requests by user and store the documents at this location:

'/users/{userID}/requests'

Firestore Security Challenge

In this challenge you will need to adapt the firestore.rules file



Requirements:



users can read and write to their private document and subcollections under '/users/{userID}'

deny access to any other users

Storage Challenge

Example of a request with the upload flag



{

  imageUrl: "https://upload.wikimedia.org/wikipedia/commons/3/39/Lichtenstein_img_processing_test.png",

  scaleFactor: 0.5

  upload: true

}

Requirements:



check if the request contains the upload flag

upload the scaled image to Firebase Storage if the flag is set to true

return the url of the image on Firebase Storage

adapt the storage security rules

Bonus

add Unit tests infrastructure

add Unit tests for downscaleImage

Rules

Create a repo on Github or Bitbucket and push this project (Don't fork!)

Make commits as often as possible! (We want see what you do and how you do it)

When you finish, send us the link to your repo by email

Please don't spend more than 4 hours on it!

Why we use coding challenges to interview developers

Hiring is one of the most time-intensive and critical processes. We know there are numbers of different approaches on this (and some pretty passionate opinions about it) but this approach works for us. We first start with a coding challenge (like this one) in order to quickly evaluate the coding level of the candidate. Depending on the results of this challenge, we will invite you for more thorough interviews such as cultural fit and more technical knowledge. Recruiting is a mutual process. Feel free to ask us any questions as well. Good luck!



What we want to evaluate with this coding challenge::



Can you write any code? Basically, we need to see if you can write any code at all. We believe that you can. Still, there are many wantacoders out there and it's difficult to tell from a short description only. Moreover, you’d be surprised how many candidates fall short when it’s time to put the cursor to the editor.



This is a pre-screening and we keep it really short. 1-2h should be fine for a skilled programmer to complete the task. That's the only code you have to write. No online-challenges, coding puzzles or similar... If we are happy with the result, we would like to invite you for further interviews on a personal level.



We know at some companies, it can be frustrating to send in coding challenges and never hear back from them anymore. That's not how we work and think! So, you will get a feedback from us, no matter if we want to continue with you or not.


Job Type

Client Payroll


Positions

Backend Developer


Must have Skills

  • Node.Js

    Beginner

  • Typescript

    Beginner


Languages

english -Basic

Up to 200 K/Year USD (Annual salary)

Longterm (Duration)

Fully Remote

Skip

Herbert B

| Switzerland