Submitting your homework
We are going to use Github Classroom for this assignment.
You need to have an account on GitHub and be logged in.
Authorize Github Classroom here and accept the assignment, then follow the instructions there.
Please follow the structure and naming of the starter repo, though you can add any additional files if you need them.
To submit the assignment, please visit Canvas and submit the URL to your final commit that you want us to grade.
You can submit as many times as you want.
Your homework is not submitted and is accruing slack hours until you do this!
Please make sure each of your exercise-N
directories are self contained, i.e. that you don't reference any files outside of the directory
(e.g. from your repo root or other exercises).
While having a common assets directory for all your exercises might be a good idea in general,
we extract each exercise directory separately (as it may be graded by different people), and that will result in your pages not working correctly.
Do not use root-relative URLs that expect a local server to run at a specific directory within your repo, and if you cannot avoid it, please document it in a README
otherwise links may be broken for whomever is grading your homework.
If you submit after the deadline, it will count towards your slack hours.
Exercise 3: Begin implementing Chat/Messaging App (52%)
This exercise will involve implementing HTML/CSS as well as Javascript functionality.
50% of this exercise is for the HTML/CSS and the remaining 50% is for the Javascript functionality described below.
Now that you have iterated on your Chat/Messaging App design, it is time to implement a high fidelity HTML & CSS prototype.
This prototype must look like your intended interface but need not provide all functionality.
Next you will use Javascript to add functionality to the HTML & CSS prototype.
We will supply a [client library](https://designftw.github.io/chat-lib) and a server for implementing the chat/messaging app.
This week you will be using the client library to add basic functionality to your prototype,
primarily to familiarize yourself with the skeleton code, data model, and client library.
In the next assignment you will add custom features developed from the user testing and prototyping cycle.
We have provided a starter skeleton in the homework assignment which includes very basic UI for:
- Signing up for an account
- Logging in to the messaging server
- Logging out of the messaging server.
- Showing the current user's username
- Having a basic conversation with a friend
You will need to serve the skeleton using a local server in order to avoid CORS issues.
Any of the following [one line static http servers](https://gist.github.com/willurd/5720255) should work.
Your submission should include the ability to:
- Render new messages
(in the implementation we provided, all that happens when a new message arrives is that the new message's id is logged to the console)
- Delete messages (it's your design decision which messages the user is allowed to delete, e.g. all of them, or only recent ones etc)
- Handle deletion of messages by other participants
- Have a group conversation with multiple people
- Make it easy to switch between conversations (it's ok if switching re-fetches data from the server)
The starter skeleton would not be graded well for usability. Your submission should have good usability. You should submit:
- A brief listing of usability (learnability, efficiency, safety) problems you see in this basic interface, and how your design addresses them.
We will be grading you on usability, design, and the quality of your code implementation.
The [documentation](https://designftw.github.io/chat-lib) will be very helpful for understanding the client.
Especially the [home page](https://designftw.github.io/chat-lib) and [client page](https://designftw.github.io/chat-lib/Client.html).
In the next assignment you will implement features from your mockup, so if you want to get a headstart, feel free to implement more things!
We suggest registering with two different usernames and logging in from different browsers, so you can easily test things.
If your files don't seem to be updating make sure to clear the cache by holding Shift and pressing the refresh button.
Alternatively, you can follow [these instructions](https://developers.google.com/web/tools/chrome-devtools/network/reference#disable-cache) to disable the browser cache while the dev tools are open.
Per the course's [collaboration policy](/collaboration.html) that "your code must be your own", you are not allowed to use Javascript libraries or frameworks.
However, we will consider allowing certain specific-purpose libraries if they enable interesting UI prospects that would otherwise require a large amount of vanilla JS code and effort, just reach out to us and ask.
**Deliverable:** Your functional prototype of the chat/messaging app in `chat-client`.
Include a short description of what functionality is included and what usability improvements you made either at the top of the HTML file, or near relevant parts.