Skip to content

prezola/technical-challenge

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 

Repository files navigation

Technical test

Background:

Our focus is on creating wedding lists for couples. In a simplified scenario a couple creates a wedding list and adds different types of products to that which become available to their wedding guests for purchase as a present. After the wedding the couple can create their order and decide which gifts to have delivered to them from all the guests’ purchases. Your task is to implement this scenario on a basic level.

The challenge:

Write a program to the best of your knowledge which will allow the user to manage a single list of wedding gifts.

The user must be able to:

  • Add a gift to the list
  • Remove a gift from the list
  • List the already added gifts of the list
  • Purchase a gift from the list
  • Generate a report from the list which will print out the gifts and their statuses.
    • The report must include two sections:
      • Purchased gifts: each purchased gift with their details.
      • Not purchased gifts: each available gift with their details.

You can find some provided products in the products.json file.

You can spend as much time as you wish to come up with a solution that you’re proud of. To pass the test, you won’t need to care about multiple users, multiple gift lists, data storage, authentication, or checkout.

Think of this as an open source project in that sense that if you stumbled across it on a community such as GitHub, what would you want it to look like? The only requirement is that the solution is written in Python. Frameworks, or lack thereof, is entirely up to you.

Hint: We’re looking for a high-quality submission with great application architecture, not a “just get it done”-like approach. Stay away from frameworks/boilerplates that handle everything for you, or use them only as a thin layer, so we can see how you structure applications yourself.

Extra mile bonus points

  • Application logging
  • Containerisation
  • Authentication
  • API client documentation (for example swagger)
  • Build script / CI
  • Data storage
  • Anything else you feel may benefit your solution from a technical perspective.

What we will be assessing

Area Max score
Functionality (does it work?) 5 points
Code Quality 5 points
Solution Design 5 points
Problem Solving 5 points
Automated Tests 5 points
Overall Score 25 points

Scoring algorithm:

def have_you_passed_the_test(overall_score, bonus_points):
    if overall_score >= 19:
        return True
    elif overall_score > 16:
        return overall_score + bonus_points >= 19

    return False

Improvements

Given more time, what improvements, if any, would you make to your code? Please include this in your repository.

Submitting

When you’re ready to submit, upload the repository to Github and share it with us!

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published