1. Design a. Keep track of the changes you made to your back-end as you implemented your front-end. What changes did you need to make and why? Would you structure your back-end differently in the future? The only changes I made to my back-end were changing the routes to "/api/...". I also tweaked the back-end tests to match the new routes. b. Did you also perform client-side validation or did you rely on server-side validation alone? What are the pros/cons of making either choice? Currently, my site relies on server-side validation. Server-side validation is good because it cannot be modified by a user to accept invalid data. The drawback is that the server is pinged more often and can cause slow speeds. Client-side validation is good for easing the burden on the server and providing more meaningful error messages, but the downside is that a tech-savy user can modify the JavaScript. 2. React a. What was your experience manipulating state with React components (especially with the useEffect hook)? What kinds of things did you struggle with? I overall had an easy experience using React for this homework. I mainly repurposed the code from the in-class activities in order to properly set up my states and useEffects(). The only things I struggled with were the book table filters and adding author names to a dropdown from their ids. b. What was your experience using types with the front-end? Did they catch any bugs? Did you have to make a lot of manual annotations? Did you resort to using any frequently, and if so, why? Using types did not catch any bugs for me in this homework. I repurposed the 'Widget' interface into a 'Book' and 'Author' interface so I could store an array of each. If I added more client-side validation, I imagine I would have to use typing to ensure that user data passed to the server was of the right type. 3. Compare and contrast your experiences writing an SPA front-end with React to writing a MPA front-end like we did in CS375. Which was harder? Which did you enjoy more? How did you feel about the experience generally? Creating a simple web page with a MPA is easier compared to an SPA. However, once you start adding multiple pages and JS functionality, an SPA like React becomes the better choice. Being able to use existing components and reuse your own components makes building larger sites much easier. I enjoy both methods, but I can imagine I would prefer React more often when building websites. React makes building websites more like writing programs compared to writing with purely HTML and CSS. That being said, React sites can sometimes take up more bandwith and processing power to render, which is not ideal in some cases / cultures.