R.T.J.C

"Real Time Jello Chat"

Requirements

API: Choose my own; uses Tenor GIFs and is implemented similar to how Discord implements their GIF system
Local Storage: Three pieces of data are stored, a custom ID, a username, and profile picture data
Controls: Users can: Create/View/Join/Leave lobbies, change their Username and Profile Picture, can send text messages, and can search + send Tenor GIFs
Design: Enough design to not make your eyes bleed out. All elements have something affecting them visually (mainly layout and margin/padding)
Labels: All buttons and most non-obvious text fields are labled
Instructions: No direct instructions per say, but if I had to ask you what a button called 'Create Lobby' means, you could probably answer
Errors: General mistakes such as not inputting a lobby ID before trying to join/create a lobby are relayed to the user. Some actions that can be considered an error will simply not doing anything (i.e. clicking the Join Lobby button with no ID results in nothing happening)
State: There's no state indication, but there is only two screens. Additionally, windows will pop up to show functionality that's revalent to that screen only
Responsive: Should work fine on all desktops, but while functional, mobile view would be a pain to use legit.
Frameworks: Uses nodeJS for the backend, otherwise, frontend is all straight HTML/CSS/JS with no frameworks

Validation: Has no major issues with validation beyond some (silly) warnings

Code: All code resides within main.js & utils.js (frontend) and server.js (backend). Has comments, but I do also try to code with understandable variable/function names. Should have no console.log()s remaining

Grade

A- to an A. While I don't have every exact requirement filled (probably), it's a fully functional site that includes API usage as well as my own backend for networking between browser clients (this took a suprising amount of effort to learn how to set up a backend). But based on the responses I got from my demo shown on crituque day, people thought it was cool and didn't have much to add to it (besides functionality that I had to basically interogate out of them)

Demo