Node.js currently is pretty hot. I can see that there are a lot of companies which are recruiting Node.js developers. Node.js, React.js, Ruby, Python...they are just programming languages which provide us the weapons for solving problems. If you are programmer and you are good at one modern language programming, you will see that they are the collection of syntaxes. At first, they build the syntaxes. Then they build the libraries based on those syntaxes. In order to build a product, we decide which language we use. We learn syntaxes then we read the API to learn the libraries.
There are two approaches for learning a new language programming.
- Which problems does it solve? The idea behind each of them.
- golang for performance issues.
- ruby on rails for web application.
- python for web, machine learning.
- cobol for insurance and banking.
- Learn syntaxes and library's API.
Let's get started with a simple chat application without saving data. Simple application is always powerful. If we are startup we should build only simple application. Then we get feedback from users, in order to go on the right track. Simple application doesn't mean easy. Because we want to keep it simple so that we have to let a room for extending. When the project goes on the next stage, it will prove our development skills.
- User registration: Because this is demo project so users just should be able to register easily. No need to save the account. Users provide the username and that would be fine.
- Creating a room: After registration, users have the right to create a new room or choosing an existing room to join.
- Sending Message:
- Users should be able to send message to all users in a room.
- Direct message to another user in the same room.
- Message status: Users should now that the messages they sent were read or not.
- Leaving a room: users won't receive any messages.
- Leaving session: informing in the rooms that users left.
- Message must be sent instantly.
- Privacy: Users only see other users in the same room. We don't want to be public although the account will be delete after leaving.
- Code need to be readable, extendable, maintainable, reliable and robust.
Flow Chart Diagrams