|
| 1 | +# Go Challenge - Browser-based chat app |
| 2 | + |
| 3 | +## Description |
| 4 | + |
| 5 | +This project is designed to test your `knowledge of backend web technologies`, specifically in `Go` and assess your |
| 6 | +ability to create backend products with `attention to detail`, `standards`, and `reusability`. |
| 7 | + |
| 8 | +## Assignment |
| 9 | + |
| 10 | +The goal of this exercise is to create a simple browser-based chat application using Go. |
| 11 | + |
| 12 | +This application should allow several users to talk in a chatroom and also to get stock quotes from an API using a |
| 13 | +specific command. |
| 14 | + |
| 15 | +## Mandatory Features |
| 16 | + |
| 17 | +* Allow registered users to log in and talk to other users in a chatroom. |
| 18 | +* Allow users to post messages as commands into the chatroom with the following format **/stock=stock_code**. |
| 19 | +* Create a **decoupled** bot that will call an API using the stock_code as a parameter |
| 20 | + * (https://stooq.com/q/l/?s=aapl.us&f=sd2t2ohlcv&h&e=csv) here *aapl.us* is the stock_code. |
| 21 | +* The bot should parse the received CSV file and then it should send a message back into the chatroom using a message |
| 22 | + broker like RabbitMQ. The message will be a stock quote using the following format: |
| 23 | + "APPL.US quote is $93.42 per share". The post owner will be the bot. |
| 24 | +* Have the chat message ordered by their timestamps and show only the last 50 messages. |
| 25 | +* Unit tests |
| 26 | + |
| 27 | +## Bonus (Optional) |
| 28 | + |
| 29 | +* Have more than one chatroom. |
| 30 | +* Handle messages that are not understood or any exceptions raised within the bot. |
| 31 | + |
| 32 | +## Considerations |
| 33 | + |
| 34 | +* We will open two browser windows and log in with 2 different users to test the functionalities. |
| 35 | +* The stock command won't be saved on the database as a post. |
| 36 | +* The project is totally focused on the backend; please, have the frontend as simple as you can. |
| 37 | +* Keep confidential information secure. |
| 38 | +* Pay attention if your chat is consuming too many resources. |
| 39 | +* Keep your code versioned with Git locally. |
| 40 | +* Feel free to use small helper libraries. |
| 41 | + |
| 42 | +## Deliverables |
| 43 | + |
| 44 | +When you finish the assignment upload your project to your GitHub and share the repo link with your initial contact |
| 45 | +via email. |
| 46 | +Indicate which, if any, of the bonus tasks you completed. |
| 47 | + |
| 48 | +If you didn't manage to finish everything, please tell us which parts you completed. |
| 49 | + |
0 commit comments