The Task
Your assignment is to create a basic app for keeping track of an inventory of things. The app should at minimum allow the user to do the following things:
- Keep track of at least one product, for example, bananas.
- Manage the quantities of the product(s). There should be a way to increase and decrease the number of items of the product(s) in the inventory.
- Send an email if the quantity of a product hits zero.
You will be building this app in React and/or Rails. Feel free to use any libraries that would be helpful, given your experience and the task.
We are not expecting to see a meticulously designed site, but do expect to have a reasonably workable user experience that presents a minimum of obstacles for the user. Likewise with code quality; we should be able to read your code and understand what is going on.
Lastly, it should be built in a way that will allow us to pull the code and run it locally.
What we’re looking for:
React Rubric
- Create a React Application using create-react-app or next.js that:
- Uses a variety of data types: integer, string, boolean, arrays, object;
- Has at least one dynamic route set up;
- Shows wireframes that express functionality of application and how a user flows through the app (optional);
- Uses at least one external API that highlights the use of array mapping and object manipulation, e.g. fetching data. It doesn’t have to perfectly fit the context of your app, you may have a personal website or an inventory tracker but decide to use a weather API to show us the next 5 days weather, for example;
- Implements some aspect of filtering or sorting data (can be related to number 5 but doesn’t have to be);
- Demonstrates some example of inputting data via form elements/controls and should include several types of input fields. You might use text fields, drop-down lists, checkboxes, radio buttons, and/or others, and there should be some links to connect the application together;
- Implements Error handling in at least one place;
- Uses hooks and functional components;
- Incorporates links or buttons to help the users navigate to different views/containers within the application.
Also: - API keys should not be exposed in the code or on github (use a .env file).
- Application code should be stored in GITHUB.
- Style your application by adding CSS, SCSS, or a UI framework or library and using your own custom CSS.
- The application should be attractive with inclusion of images, color, fonts and other CSS styling.
- App must be responsive.
Rails Rubric
- Create an inventory application in Rails from scratch using Active Record and a database. The inventory might have apples, bananas, shoes, or whatever, with item count, description, and other attributes.
- The app must include at least one Active Record model.
- Model attributes should include different data types: string, boolean, integer, float, or whatever
- Validation of attributes to prevent the creation of invalid records
- A controller that implements all CRUD operations for your model
- Views for each of the CRUD operations, to include index, new, edit, and show
- Include links, buttons, and a navbar to help the user navigate the application
- The application should be attractive with images, color, fonts, and other CSS styling
- Submit a link to a github repository with your application code.
The application could have views implemented as ERB files, or they could have views in JavaScript that call APIs implemented in Rails. Either is acceptable.
The following are not necessary, but are examples of things that would be nice bonuses:
- Building a full-stack app with both client and server code
- Working with a database and/or creating an API
- Allowing the user to determine what kinds of products the inventory tracks
- Testing/linting
- A particularly well-designed GUI
- A working version of the app hosted in a cloud environment (with a link to the URL)
Sharing your app with us
We would like you to share the app with us via GitHub. Included in the repository should be a README with instructions for setting up and running the app locally.
It would be easiest to create a public repository for the app and provide us the link for review. If you would prefer to keep it private, please let us know; we will ask you to invite us as collaborators on the repository.
We expect you to turn in your project approximately one week after you begin it (honor system).
The Link
You will submit the link to your project repo via your Apprenticeship Application form, found here.
Thank you, and happy coding!