# Functions
AuthenticateUser - Sigleton function to authenticate users.
BasicNameValidation - Basic syntax validation for names.
ConnectUser - Singleton function to connect users.
ExecuteCommand - Executes a command from a given client.
GetJWTKey - Gets the JWT key environment variable.
ID - Returns the singleton ID.
IsTokenValid - Checks if a token string is valid.
NewClient - Creates a new client structure.
NewRoom - Instantiates a new room.
NewServer - Returns a fresh instance of a Server.
NewTokenString - Creates a new JWT token for a client.
NewUser - Returns a new user instance.
ValidateNickname - Checks the correct syntax for the nickname.
ValidateRoomName - Checks the correct sytax for room names.
# Constants
CommandCreateRoom - Command to create a new room.
CommandExit - Command that gracefully disconnects a client.
CommandListRooms - Command that lists all available rooms.
CommandListUsers - Command to list users within same room.
CommandMessage - Command to broadcast a message.
CommandSetNickname - Command to change user's nickname.
CommandSwitchRoom - Command to switch user's room.
# Structs
Client - struct holding messageclient info and threads.
Command - Structure representing clint commands.
Message - Basic message abstraction.
Room - Room representation and threads holder.
Server - Central struct for message server representation.
User - Every client connected to the server is a user with relevant information.