So the only issue I can think of is about the way to save messages in the database:
have one entry per channel (a channel <=> a unique URL, with 1:n people in the channel), containing the entire chat log (nicks, timestamps, messages).
have one entry per message. Drawback: that means saving a lot of information into the DB, maybe DDOSing it if there are a lot of people in a channel. Benefit: it allows complex querying on the server side.
I'm all in for 1), but implementation seems more complex. What do you think @Aldream ?
I'd say, let's go for 1, as a first shot. The way I see it, object-oriented speaking:
Basically:
a User must identify her/him-self to access the app, by choosing a pseudo. If he wants to reserve the pseudo, he must use a password.
rights could be a concatenation of flags, covering some basic stuff, such as the rights to:
initiate a conversation with other Users (beside the app owner)
send emails
add/remove Users to conversations
ban Users
administrate rights
etc.
User.email and User.notif would cover the possibility to receive mail notifications.
Conversation.url, well, would define the URL to access the "room" (the id could actually be used, but we could offer the possibility of a more human-friendly choice).
Conversation.isPersisted would affect the choice of protocol, and the server-side instantiation of the conversation.
Pretty basic stuff overall, but this could be our PoC... Your opinion?
So the only issue I can think of is about the way to save messages in the database:
I'm all in for 1), but implementation seems more complex. What do you think @Aldream ?