Giter VIP home page Giter VIP logo

web-sprint-challenge-single-page-applications's Introduction

Single Page Applications Sprint Challenge

Read these instructions carefully. Understand exactly what is expected before starting this Sprint Challenge. READ ALL INSTRUCTIONS BEFORE REACHING OUT TO ASK A QUESTION!! (that above part was because the FAQs section answers 75% of questions)

This challenge allows you to practice the concepts and techniques learned over the past sprint and apply them in a concrete project. This sprint explored single page applications. During this sprint, you studied routing, forms, and testing in cypress. In your challenge this week, you will demonstrate your mastery of these skills by creating Bloomtech Eats, a website designed to bring food to hungry coders.

This is an individual assessment. All work must be your own. Your challenge score is a measure of your ability to work independently using the material covered through this sprint. You need to demonstrate proficiency in the concepts and objectives introduced and practiced in preceding days.

You are not allowed to collaborate during the sprint challenge.

Full Time Students

The challenge is available from 5pm PST on Thursday. However you should not be coding through the night; rather you can wake up on Friday and start coding at an hour you choose, rather than waiting for a unified start time. Ideally, you will be writing the majority of the code during the time block allocated on your calendar (9am to 1pm PST).

Introduction

In this challenge you will be working from the Bloomtech Eats homepage to create a functional Pizza? button that leads to a build your own pizza custom form.

You may use the following wireframes (also in a folder above) as guidance as you design your site but it is not required that you do so.

Form

Home Page

Confirmation

Commits

Commit your code regularly and meaningfully. This helps both you (in case you ever need to return to old code for any number of reasons) and the graders as they evaluate your solution.

Interview Questions

Demonstrate your understanding of this week's concepts by answering the following free-form questions. Edit this document to include your answers after each question.

  1. In 1-2 sentences, explain what React's useRouteMatch hook is used for.

This attempts to match the current URL in the same way that would. It is useful for getting access to the match data without rending

  1. How would you explain form validation to someone who has never programmed before?

Form validation is a process that ensures a user's input is useful to the creator of the application/website

  1. In 1-2 sentences, define end to end testing.

End to end testing is responsible for ensuring that created applications behave as they are expected to.

Instructions

Task 1: Project Set Up

  • Create a forked copy of this project
  • Clone your OWN version of the repository (Not Lambda's by mistake!)
  • Implement the project on the main branch, committing changes regularly
  • Push commits: git push origin main
  • PUSH EVERYTHING TO THE MAIN BRANCH

Task 2: Project Requirements

Your finished project must include all of the following requirements:

  • A homepage that has a "/" route and links to your form (button, nav bar, or any other type of link is acceptable but must have an id of "order-pizza")
  • A order form that has a "/pizza" route and shows the form
  • A form with an id of "pizza-form"
  • A name text input field with an id of "name-input"
  • Validation for name and the error message is "name must be at least 2 characters" (Use this exact error message to make sure tests pass) ::: VERY IMPORTANT TO USE THAT EXACT ERROR MESSAGE (casing included!)
  • A dropdown for pizza size with an id of "size-dropdown"
  • A checklist for toppings - at least 4 (hint: name each separately!)
  • Text input for special instructions with an id of "special-text"
  • An Add to Order button that has an id of "order-button" and that submits form and returns a database record of name, size, toppings and special instructions

Data should look something like

{
    name: string,
    size: string,
    topping1: bool,
    topping2: bool,
    special: string,
}

where there is a key for name, size and special and they are strings and there is a key for each of the toppings and they are booleans (Note - your payload should look similar to the about data)

Testing MVP

Implement the following tests in Cypress:

  • test that you can add text to the box
  • test that you can select multiple toppings
  • test that you can submit the form

In your solution, it is essential that you follow best practices and produce clean and professional results. You will be scored on your adherence to proper code style and good organization. Schedule time to review, refine, and assess your work and perform basic professional polishing including spell-checking and grammar-checking on your work. It is better to submit a challenge that meets MVP than one that attempts too much and does not.

Task 3: Stretch Goals

After finishing your required elements, you can push your work further. These goals may or may not be things you have learned in this module but they build on the material you just studied. Time allowing, stretch your limits and see if you can deliver on the following optional goals:

  • Toggle form component for gluten free crust
  • Turn form element sections into nested routes
  • Test more of the application with Cypress
  • Build UI for the eventuality of a network error when POSTing the order
  • Add functionality to your order button that it leads to a Congrats! Pizza is on it's way! page and returns a database record of the whole order

FAQs

How do I return a database record of the order?

One of your goals is to return a database record of the order - for this you'll need to write a post request. For more detailed steps, use the below:

  1. Create a new state variable + hook
  2. Post to reqres with axios (the link you should use is step 4)
  3. Log data in console
  4. The URL you should use is https://reqres.in/api/orders. The tests are based on this URL.

Submission format

Follow these steps for completing your project.

Set up your fork on Github to codegrade following the instructions here, pushing commits to your main branch.

  • Your code will be reviewed over the next few days. Read these instructions to learn how to view feedback in CodeGrade.

web-sprint-challenge-single-page-applications's People

Contributors

ladrillo avatar crharding avatar andybolos avatar zoelud avatar matt-github avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.