Habahaba architecture
Habahaba consists of three major modules: JabberWebClient? based on Jappix, WebApplication? and HabahabaGateway?.
JabberWebClient? is written on JavaScript? using jQuery, JSJaC and connects to the Jabber-servers through BOSH.
HabahabaGateway? is written on Python using Twisted and Twilix.
WebApplication? is written on Python using Django.
Database access provided by Django's ORM. For now supports any of ORM supported databse. But major database is PostgreSQL.
When user wants to connect to his already registered Jabber-account JabberWebClient? connects directly to the server through BOSH-server and acts like regular JabberClient? like Gajim or Psi.
Anonymous mode
If user has no Jabber account to connect and wants to chat with a friend or connect to groupchat, JabberWebClient? will connect to a Jabber-server which accept anonymous authentication but isolated from other Jabber servers.
So, to connect to other users we need a intermediary. HabahabaGateway? acts in this role. It routes stanzas to other servers but asks anonymous to confirm that it is not a bot and prevents abusing of humans.
