Product Overview/Background
Our product is an iPhone app written in Objective-C. The iPhone app functions as a client which makes request to our various server-side application, one of them being our beauty appointment booking system (written in Node.js). Whenever a user wants to book a beauty appointment in our app, they go to the salon's profile page and click on the service they'd like. This click sends a request to our Booking Server (via WebSockets), and then our Booking server uses Selenium to crawl the specific website for that salon to automatically book the appointment and report it back to the iPhone client. Additionally, our booking server makes use of BrowserStack to handle processing multiple browser sessions simultaneously in the cloud.
Task for You
We're looking for engineers who can support the crawlers for the various salon systems that we work with. There are number of salon software companies, and our automatic booking system needs to support all of them. For your this project, we'd like you to implement support for just one of the salon software providers. We will provide you with a list of test cases to test against. You will be required to implement three general functions and ensure they work across the set of test cases:
• getSalonData — this function just collects the names of the services, prices, technicians, and returns them to the server
• searchBookings — this function receives a date and service name as an argument and then crawls the website and returns all available appointment slots
• requestBooking — this function receives a date, service, time, and client contact info as arguments then crawls the website and books the appointment, returning the results to the client.
Structure/Technical Details
We've already implemented a few of these, so we have examples already in the codebase. Once you have signed the appropriate documents and have been on-boarded, we can grant you access to our GitHub repository, and Asana task management. We already have a codebase laid out for the crawlers, you just need to extend it by adding on support for the additional required system and making sure it can work with the current system.
Example Crawler Code
See the attached [login to view URL] for an example of a crawler made for one of the booking systems. This will give you an example of the kind of routines we do (e.g. using jQuery to manipulate the DOM, click element, access dropdown menus, send data back to clients, etc).
Requirements
Experience with JavaScript / Node.js
Experience w jQuery, DOM manipulation, HTML
Familiar with the concept of (Web)Sockets
Comfortable with Git
Must have a GitHub account (provide us your username so we can show you sample code)
Experience with Selenium Web Driver JS
Comfortable using Asana for coordinating with the team
First Code Handin due Friday, September 23rd by 5 PM PST
Entries submitted after September 23rd , 5 PM PST will be disqualified
Please make sure to test your code against the provided test cases PRIOR to this date.
Engineering Team will review and test your code the week of Sept 19.
You will be expected to be available to fix any issues revealed during review and make sure that your code passes all tests by Friday, Sept 30th at 5 PM PST
Code that does not pass the tests by Friday, Sept 30th at 5 PM PST will be disqualified
Payment Details
Project fee will be paid upon successful passing of all test cases, as confirmed by the Engineering Team
All code must be submitted for review by Friday, September 23, at 5 PM PST. Late entries will be disqualified and will not receive payment.
All code must be passing test cases by no later than Friday, September 30th at 5 PM PST in order to receive payment for the project.
Next Steps
Please review the Requirements and make sure that you meet them. If you are interested in working on this project, please do the following:
Include links to any crawler/Selenium projects you’ve done
Provide your GitHub user name