---
# System prepended metadata

title: Untitled

---

### Description
We work on many of the latest and greatest of technologies and versions respectively. Hence we are always challenged with learning something or the other or sometimes simply revamping what we do.

Hence this assessment is to get to know you or put you in an unfamiliar but similar situation. We look upto you to be familiar with at least (some of) the following technologies (if not all) and show the ability in your coding and architecture! 

Here is our stack: 

#### Frontend technologies:
* ECMA 6
* Frontend framework e.g. VueJS/AngularJS/ReactJS
* Webpack
* HTML/CSS as needed

#### Backend technologies:
* NodeJS 8+ with ECMA 6
* Golang 1+
* Python 3+ (our main data processing stack)
#### Database
MongoDB
MYSQL

#### Deployment
* Docker & Jenkins
* or Serverless framework with AWS lambda or Cloud functions if you prefer so!
#### Testing
* Integration testing
* Unit testing
* 
If you dont know something above, thats actually a great opportunity to learn it and implement it in this task.



---
Here is the assignment, please take the time to read through this and ask questions.

#### Final Goal: Build a Cheapest Flight Search Tool Using WebScraping

PS: Feel free to do your thing, your way. Thats how we operate.

The assignment is divided into 4 goals or call it milestones. We would like to see how far can you go. It is alright to not complete all of the goals, we like to see how you handle challenges.

### Goal 1: 
Build a bare minimum UI to ask users for 3 main inputs (from, to, date), then based on the input it generates Expedia flight search URL expedia.co.in. Using the inputs pass it to the URL and use any framework (selenium webdriver for example), scrape the data. Use any tool like or a JS alternative to BeautifulSoup to dig through the HTML code of the website to find necessary information, such as airline names, duration of flight, stops, timings, and price. After you do some data cleaning (getting rid of certain symbols, whitespace...etc.), which then allows you to loop through the returned flights to find the cheapest ones. Save the data

### Goal 2: 
Write data from your scraped information into a database table of your choice

### Goal 3: 
Write APIs that can read post data after taking user input and pass it to your web scraping tool

### Goal 4: 
Put things together in the UI and show cheapest flights. Feel free to use Django or Flask or RoR or anything you like to fancy.

### Goal 5 
**Happy testing!**

Last but not the least, testing! You can follow TDD or FDD!

* There should be a way to test the application features and functions.
* Must have integration tests!
* Must have unit tests!

### Submit your code
- Please don't forget to write your readme file which should contain what/why your have done things in certain way! Documentation is highly appreciated!
- Your solution should be committed back into this repository like you would do in a normal project.
- You can commit and push as many times as you want.
- We prefer https://12factor.net/.
- We value a clean coding style. It would be nice if you follow something like Airbnb's JavaScript Style Guide!

Best of luck!
