• Skip to primary navigation
  • Skip to main content

Code the Dream

Real Talent. Real Experience. Real Impact.

  • About
    • Who We Are & What We Do
    • Job Openings
    • CTD Voices
    • Code The Dream’s Impact
    • In The Media
    • Board
    • Contact Us
  • Get Involved
    • Volunteer
    • Senior Dev Fellowship
    • E-Newsletter
    • Thank You CTD Volunteers
  • Services
    • Portfolio
    • Need an App?
  • Class Info
    • Class Info
    • Apply Now
    • Virtual Info Session
  • Blog
  • Donate
  • Show Search
Hide Search

CTD Labs Apprenticeship Application Assignment

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:

  1. Keep track of at least one product, for example, bananas.
  2. 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.
  3. 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

  1. Create a React Application using create-react-app  or next.js that:
  2. Uses a variety of data types: integer, string, boolean, arrays, object;
  3. Has at least one dynamic route set up;
  4. Shows wireframes that express functionality of application and how a user flows through the app (optional);
  5. 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;
  6. Implements some aspect of filtering or sorting data (can be related to number 5 but doesn’t have to be);
  7. 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; 
  8. Implements Error handling in at least one place;
  9. Uses hooks and functional components;
  10. Incorporates links or buttons to help the users navigate to different views/containers within the application.

    Also:
  11. API keys should not be exposed in the code or on github (use a .env file).
  12. Application code should be stored in GITHUB.
  13. Style your application by adding CSS, SCSS, or a UI framework or library and using your own custom CSS.
  14. The application should be attractive with inclusion of images, color, fonts and other CSS styling.
  15. App must be responsive.

Rails Rubric

  1. 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.
  2. The app must include at least one Active Record model.
  3. Model attributes should include different data types: string, boolean, integer, float, or whatever
  4. Validation of attributes to prevent the creation of invalid records
  5. A controller that implements all CRUD operations for your model
  6. Views for each of the CRUD operations, to include index, new, edit, and show
  7. Include links, buttons, and a navbar to help the user navigate the application
  8. The application should be attractive with images, color, fonts, and other CSS styling
  9. 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!

"Programs like CTD are important because everyone should have access to a good education regardless of their background, faith or finances. Some students like me are passionate about coding, but unfortunately, we can't afford a boot camp." Learn more at codethedream.org/classes. pic.twitter.com/3q1vz2HRz0

About a week ago

Applications are now open for our next round of introductory and advanced-level classes. Join our passionate, welcoming student community and learn the programming skills necessary to succeed in the #tech industry. codethedream.org/classes/ pic.twitter.com/irbz9txTkN

About 2 weeks ago

Excited to be celebrating this month's CTD Coworking Day in person and virtually alongside @thoughtbot's Rainbow Connection, an Employee Resource Group that provides support for the LGBTQIA+ community. 🌈 🫱🏾‍🫲🏼 pic.twitter.com/qzaBDA8L6t

About 2 weeks ago

The app offers a free tier to help make it accessible to the broader public. We should all take advantage of innovations like @upstatenc. Our democracy is not perfect, but it's stronger when we participate. Learn more at start.keepupstate.com.

About 3 weeks ago

CTD Labs is proud of our work on @upstatenc, a legislative tracking/analysis tool that delivers nearly immediate bill updates and keyword-searchable transcripts of hearings and floor sessions from NC’s General Assembly.

About 3 weeks ago

Follow @CodeTheDream

Copyright © 2023 Code the Dream · All Rights Reserved · Website by Code the Dream & Tomatillo Design