Skip to content

Instantly share code, notes, and snippets.

@mhamzawey
Created November 6, 2018 15:02
Show Gist options
  • Save mhamzawey/c2dd6bba3f2c8c9d3fb32272e6773055 to your computer and use it in GitHub Desktop.
Save mhamzawey/c2dd6bba3f2c8c9d3fb32272e6773055 to your computer and use it in GitHub Desktop.
Trufla Challenge
Backend Engineer
The multi website offers
We have multiple websites for online shopping. We need to create a website that has can be considered as a hub for the deals/offers from multiple website on a single platform.
The specifications:
You will need to collect the information for your website from other web sources There are plenty of resources you can draw, for example:
● https://www.jumia.com.eg/
● https://egypt.souq.com/eg-en/
The challenge here is that the information you need from these resources is in different formats and therefore difficult to analyse. We need to standardize it in a unified format that can be easily digested by our engine.
Once all the information has been standardized we want to make it easily accessible to website visitors via a centralized deals website.
The requirements for this Application are:
● Offers/deals filter: User can filter the events based on different criteria:
○ Web Source ○ Dates ○ Simple partial text search on title (no need to implement complex text, search SQL "like" or similar is enough) ○ Deals and offers percentages
● The offers are updated frequently so visitors can always access fresh information. The implementation
Based on these requirements we need to have a working prototype.
Your deliverables for the challenge have to fulfill the below requirements:
1. Implement the web application that solves the requirements explained above.
2. Prepare your code for easy deployment. Add instructions if you think are necessary.
3. The application has to be built using Ruby on Rails.
4. Swagger Documentation is a MUST
5. (Hint) Docker, Docker-Composer will be useful
6. (Bonus) use ReactJS/AngularJS for the front-end
@Exellin
Copy link

Exellin commented Nov 6, 2018

I have never worked with docker either. Same as above. I think coding challenges should be asking about their essentials (that any ruby developer would know), not whether or not they have familiarity with specific technologies.

@Exellin
Copy link

Exellin commented Nov 6, 2018

I think the user can't have the option to build with a javascript framework or not. If we ask them to, then the application needs to be built like an API and will be more work. If not, rails can be built just as a standalone application not as an api and the requirements vastly change.

truLeads is built with a javascript framework and api so I'm leading towards not making this optional (but all removing all the non-necessary points I talked about above in order to reduce the overall requirements. Also have it be their choice of whatever they are familiar with).

@Exellin
Copy link

Exellin commented Nov 7, 2018

Edited version I think is more appropriate:

Trufla Challenge

Backend Engineer

Create a database populated by a seeds.rb file you write using https://github.com/stympy/faker/blob/master/doc/v1.9.1/commerce.md

The requirements for this Application are:

  • A paginated list of all products in the database showing their name and price, and showing a products current promotion and discounted price if one is active.

  • Department filter: Selecting a department will display all of the products within that department.

  • Promotion filter: User can filter products that have the entered promotion_code.

  • Simple partial text search on product name (no need to implement complex text, search SQL "like" or similar is enough)

Based on these requirements we need to have a working prototype.

Your deliverables for the challenge have to fulfill the below requirements:

  1. The backend has to be built as a consumable API using Ruby on Rails

  2. The frontend has to use the API you built using a javascript technology of your choice.

  3. The application has to be deployed and accessible to a URL you provide

  4. (Bonus) Have a page showing the products with the biggest discounts between their regular and discounted price.

  5. (Bonus) Have automatic deployments set up on a successful pipeline on GitHub or Gitlab

  6. (Bonus) Implement all the above with enough testing you would deem sufficient

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment