Skip to content
Ashiru Abdulgafar edited this page May 20, 2019 · 4 revisions

Full-stack Challenge

Overview

In this project, we will build an e-commerce system which allows users to search, add items to their shopping cart, create order and checkout successfully. Given the database in MySQL, we are required to implement the backend and frontend.
Check out the files at https://github.com/zandoan/turing-fullstack and ensure to do this challenge in Node and React since https://turing.com have maximum customers who want Node+React full-stack engineers and a lot of opportunities to match you quickly for medium to long term projects if you do exceptional work in this project. If are not familiar with one or both of these frameworks, please feel free to use other frameworks/languages (Angular, Vue, PHP, C#, Python, Clojure, etc.). We have fewer customers interested in full stack engineers skilled in these other technologies, but they still exist and we can match you if you do exceptional work in this project. Any advanced techniques, tools, frameworks used in the code will also give you bonus points. Please add notes in the readme file so we can easily find and evaluate them. Our customer companies have very high standards for software engineers, so please do your best possible work here, to impress them.

Before Your Start

  1. Please visit the following link when you are ready to work on the project: Virtual Stand Up
  2. You will need to login and set a time for daily check-in.
  3. You are required to give a short report of your progress at this set time each day. Failing to do so will negatively affect your candidacy.

Core expectations

  1. UI Design: clean and responsive design. You can use 3rd party component libraries. Use modern structure/technology you know (SCSS, HTML5, flex) in HTML/CSS.
  2. Functionalities: work well as expected. Precise inputs/outputs. Users can go through flows smoothly. No critical bugs.
  3. System Design: Use most advanced system architecture as you can.
  4. Coding: clean code. Good coding style. Good comments. Easy to read, debug, and add more kinds of stuff.
  5. Testing: You should add test cases for the main functions of the system.
  6. Deployment: Host your solution online and give us the link of the website
  7. Documentation: Describe the architecture, technologies you use in your documents and readme file (visually with images, diagrams…). Provide clear backend API documentation so other developers can follow and use your APIs easily.
  8. Source Code: please upload your source code on Github, set it private, invite TuringCom as Collaborator, and send the link to us.

Feature requirements

  • [] Users can see all items when entering the website
  • [] Items are displayed properly based on the selected department and category
  • [] Users can search items through the search box
  • [] Support paging if we have too many items
  • [] Users can see item details by selecting a specific item
  • [] Users can add items to their shopping carts
  • [] Users can register/log in using website custom forms, or social login libraries
  • [] Users can checkout with 3rd party payment gateways: Paypal or Stripe. This requirement is mandatory, you must use the related API for the payment.
  • [] Users will get confirmations over emails about their orders

Frontend requirements

  1. Elegant UI:

    • You are welcome to use any 3rd party component library like Bootstrap, Material Design.
    • Try to polish the UI as much as you can.
  2. Component rendered smoothly:

    • Data loaded from server side and rendered on components smoothly.**
  3. Strong front-end framework:

    • We strongly recommend the use of modern architecture, frameworks (React most preferred, Angular, Vue are okay also) to control flow, store client data.
  4. Advanced client-side tech stack:

    • We strongly recommend using advanced CSS/HTML/JS techniques (local storage)
  5. Clean code structure:

    • Code structure/directory makes sense and can be scaled easily
  6. Friendly error messages:

    • Display custom error messages to users.

Backend requirements

  1. Use the Turing database in Github:

    • This is mandatory. We don’t accept your own database.
  2. Strong backend framework:

    • Can develop backend APIs fast and easily.
    • Has a good solution (ORM..) to interact with the database.
    • Returns proper APIs to the frontend.
  3. Performance:

    • APIs should be fast. No timeout or long executions.
    • You’ll be evaluated on your caching technique.
  4. Security:

    • The APIs should be secured well without security holes.
    • Use URL rewriting to support SEO and search engine friendly URLs.
  5. Clean code structure:

    • Code structure/directory makes sense and can be scaled easily
  6. End Points:

    • Follow the swagger documentation in this link, All endpoints, inputs, and outputs need to be exactly matched this documentation. This is your guide but please don’t use it for your front end.
  7. Errors:

    • Use this link to check the list of errors, you need to use these codes and messages.
  8. Authentication:

    • The Authentication should use a header param named 'USER-KEY' using Bearer scheme.
    • Your application needs to return the key preceded by the word 'Bearer' at '/customers' and '/customers/login'.
  9. Payment:

    • You should use our Stripe API key 'sk_test_lomdOfxbm7QDgZWvR82UhV6D' to do the charge.
    • You should send the 'order_id' on metadata property to Stripe.
Sample designs

Feel free to redesign them and come up with the new designs that surprise us :)

Sample projects
first Header Second header
Design https://youtu.be/bjCmoRi13LI
Registration https://youtu.be/Hl5MGUpuIbw
Payment https://youtu.be/P_Bo02pQEz8

Once you complete, please send us the code and the link to your hosted solution.

What to Submit:

Once you finished the whole project or the submission deadline is over, please send an email to [email protected] with the following information: your full name, the source > code link, hours spent on the project, hosted link, documentation about the back-end architecture, API documentation.

Question

If you have any question or concern about our challenge. Please send an email to [email protected] or create an issue on the Github repository we have given. we
already created a list of Frequently Asked Questions, feel free to check it out FAQ

  • Full-stack Challenge

  • Overview

  • Before Your Start

  • Core expectations

  • Feature requirements

  • Frontend requirements

  • Backend requirements

  • Sample designs

  • Sample projects

  • What to Submit

  • Questions

Clone this wiki locally