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.