CS 347: Project 3 – React App – due December ?
In this third project, you will create a dynamic web app that interacts with the web service you created for project 2.
Your project must meet the following expectations:
- Your app will provide a front-end interface to your web service. The user will consume, edit, and delete data by interacting with visual components in the app.
- You will use React’s functional components and hooks like
useState
,useEffect
, and so on. (Do not use classes for making components, nor any other older forms of React.) - The DOM of your client must change dynamically as the user interacts with it. (Sites with only static content generally should not be written with React.)
- Your app will have at least five custom components stored in separate source files.
- Your app will place some global state that is not easily shared through props in a global store managed by Redux.
- Your app will have some local state.
- Your app will allow navigation to three or more pages using React Router. Directly enter a particular page’s URL must not result in a 404.
- The user interface of your client must follow the aesthetic and usability principles described in project 1, including clean spacing, coherent alignment, sufficient contrast, harmonious colors, and responsive design.
- You will send data to and receive data from your web service using your own calls to
fetch
and not through any helper library. - You will indicate asynchronous activity to the user via the GUI. For example, while
fetch
executes, you show a progress wheel. - Your client must be free from all warnings and errors.
- Your client must be available through the URL
https://project3.YOUR-DOMAIN-NAME
. It must be served out via HTTPS over port 443. If visitors access your client through port 80, they must be redirected automatically to port 443. The configuration is very similar to that of project 1. - Your client must be stored in the Git repository that your instructor has made for you.
- Your Git repository should show a steady flow of commits over the course of the project. Committing and pushing should happen steadily, after each work session, and not just right before the due date.