For Your Party Backend Code Challenge Specifications
Document Objective
The purpose of this document is to provide detailed documentation that clearly defines the application that an applicant will create for the For Your Party Code Challenge.
Now that you have completed our Frontend Challenge let's update it to use your own custom API! Create an API that will provide one endpoint that will server the products data as a json array. The product data should be imported into a normalized structured database of your design. This means you will need to write an import script to take the data from products.csv.
The details for this web application are defined below.
The developer will import data from a csv file provided by this gist file products.csv into a structured database of their design. This database will be used by your api endpoint to generate it's json payload.
The products endpoint will server up the products data as a json payload. This endpoint should follow RESTful design practices.
Once your API endpoint is ready, update your frontend to now use your custom api endpoint to render the products.
The developer is expected to adhere to the following parameters. Also, the developer is free to use any third party library/framework using composer.
The application code will be created with the assumption that other developers will work on it in the future, so it must be documented enough to make it easy for others to understand and maintain.
The application code must be developed using Object‐Oriented methodologies. It must also be written in PHP 7+ and be E_STRICT‐compliant. The use of third party libraries and packages (ie. packagist.org) is allowed.
All application errors must be handled gracefully and display user‐friendly error messages if necessary.
The developer will provide a url to a github (or similar git hosting service) repository. Instructions on how to run the application will be provided within the README.md file.
If you cannot finish simply do the best you can and explain your thought process in the comments. Work at your own pace. We prefer quality over speed.
When a user toggles a product as their favorite the User Interface should save that state in a database. Create an API that will receive a json payload containing the Name of the product and a flag signifying the product is favorited by the user. This will be stored in a structured database. This API endpoint should adhere to RESTful design practices.