diff --git a/subjects/real-time-forum/typing-in-progress/README.md b/subjects/real-time-forum/typing-in-progress/README.md new file mode 100644 index 00000000..22626d64 --- /dev/null +++ b/subjects/real-time-forum/typing-in-progress/README.md @@ -0,0 +1,31 @@ +## typing in progress + +### Objectives + +You must follow the same [principles](https://public.01-edu.org/subjects/real-time-forum/README.md) as the first subject. + +For this project you must create: + +- A Typing in progress engine + +### Instructions + +A typing in progress engine is the a way that people can see that a user is typing in real time. Allowing you to see in real time that the other user is replying or sending a message. + +The typing in progress engine must work in real time! This meaning that if you start typing to a certain user this user will be able to see that you are typing + +This engine must have/display: + +- A websocket to stablish the connection with both users +- An animation so that the user can see that you are typing, this animation should be smooth (no interruptions/janks) and just enough to draw attention for the user to see (user friendly) +- The name of the user that is typing +- When ever the user stops typing or finishes the conversation, it should not display the animation + +For help displaying the typing in progress you can take a look on the js [event](https://developer.mozilla.org/en-US/docs/Web/Events) list, primarily the **Keyboard events** and the **Focus events** + +This project will help you learn about: + +- [Go routines](https://golangbot.com/goroutines/) +- [Go channels](https://medium.com/rungo/anatomy-of-channels-in-go-concurrency-in-go-1ec336086adb) +- [WebSockets](https://en.wikipedia.org/wiki/WebSocket) +- [Events](https://developer.mozilla.org/en-US/docs/Web/Events) diff --git a/subjects/real-time-forum/typing-in-progress/audit.md b/subjects/real-time-forum/typing-in-progress/audit.md new file mode 100644 index 00000000..f358dc39 --- /dev/null +++ b/subjects/real-time-forum/typing-in-progress/audit.md @@ -0,0 +1,37 @@ +#### Functional + +##### Open two browsers (ex: Chrome and Firefox or private windows) and log in with different users in each one. With one user start typing. + +###### Can you confirm that the typing in progress engine works? + +##### Using the same two browsers, start typing with one of the users. + +###### Can you confirm that the typing in progress has the name of the user that is typing? + +##### Using the same two browsers, start typing with one of the users. + +###### Is there any animation from the typing in progress + +##### Using the same two browsers, start typing with one of the users. + +###### Does the animation work smoothly, without movement interruptions? + +##### Using the same two browsers, start typing with one of the users. + +###### Is the animation from the typing in progress engine user friendly (easy to understand/see)? + +##### Open two browsers (ex: Chrome and Firefox or private windows) and log in with different users in each one. With one user start typing and then stop. + +###### Can you confirm that the typing in progress engine stopped when the user stop typing? + +##### Open two browsers (ex: Chrome and Firefox or private windows) and log in with different users in each one, then start a conversation between the users. + +###### Is typing in progress engine working properly in both users? (each one can see when the other is typing or not) + +#### Bonus + +###### +Does the project runs quickly and effectively? (Favoring recursive, no unnecessary data requests, etc) + +###### +Does the code obey the [good practices](https://public.01-edu.org/subjects/good-practices/README.md)? + +###### +Is the code using synchronicity (Promises and goroutines/channels) to increase performance?