Skip to content

Instantly share code, notes, and snippets.

@netmask
Created December 13, 2019 06:59
Show Gist options
  • Save netmask/dda47d8847859914df54b035d2a835a8 to your computer and use it in GitHub Desktop.
Save netmask/dda47d8847859914df54b035d2a835a8 to your computer and use it in GitHub Desktop.
# Product Management Tool (Rails/JS)
Your task is to create a simple product management tool that lets you create products and search products in a listing page. You are required to use Ruby on Rails (>=5) and React for development.
## Requirements
Your app will implement 3 models.
* `Product` which contains the following attributes/validations:
* `name` (string (0-1024 chars), unique)
* `upc` (string (10,12 or 13 chars), unique, only numeric characters (0-9) allowed)
* `available_on` (datetime, must be in the future)
* `Property` which contains the following attributes/validations:
* `name` (string (0-255 chars), unique)
* `ProductProperty` which contains the following attributes/validations:
* `value` (string (0-255))
`Property` will represent additional fields that can be associated with a product. Ex: brand, description, color etc.
`ProductProperty` will contain the values associated with a `Property` object and a `Product` object. Ex: "Chanel", "Red" etc. In other words, a `ProductProperty` object should contain references to a `Product` object and a `Property` object.
Your app will provide 2 pages:
* The Product Create page. This should contain a form with the required Product fields. The form should have a button that lets a user add more properties (name and value pairs) to the product. In the end there should be a save button which lets the user know if validations passed and a record was saved or not. Ex:
![Product Form](https://i.imgur.com/xShO769.png)
* The Listing page. This page lists the products created (in no particular order) and their details (including property name/value pairs). The Listing page also should contain a search field which dynamically searches product names and updates the listing page with the filtered results using React/Vue/Ember. Ex:
![Product Listing](https://i.imgur.com/2moVl0h.png)
## Guidelines
* **Your app must be developed using Ruby on Rails (>= 5.2).**
* You may use a database of your choice.
* The search functionality on the listing page can be implemented using React.
* The Product Create page can be developed using rails templating engine or React.
* The forms do not need to be styled as shown in the example images but some styles.
* There is no need to implement any sort of authentication on the app.
* You may use any gem or library in your app to complete your project. Open-source and stackoverflow is your friend.
* Your solution app **must be uploaded to github.com** and **should include a README file** containing instructions on setting up the database and running the app.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment