I wouldn't be surprised if there's something way better out there, but if you get stuck with Dokuwiki, I've been considering integrating Converse.js into my Dokuwiki and running an XMPP server to provide chat. This plugin might do for a task list, but I haven't tried it.
This looks really great.
If i want to use it on freenode or some other instance do i have to self host? , or is there some default hosted version like on converse.js (if not is there any plans of doing that?)
check awesome-selfhosted. I suggest converse.js with auto-logging into a conference room. You need a backend XMPP server (Prosody takes 3 minutes to configure) with a BOSH endpoint
In particular you would install the web interface in the form of converse.js and point it at whatever XMPP server you felt like. If people wanted to use apps or desktop clients they could just do so. Example:
Converse.js does not upload OMEMO keys to any servers, and in fact it has no server-side storage at all - it's a client-side Javascript application that operates within your browser. It aims to connect directly to your XMPP server using BOSH (HTTPS) or websockets. If those fail (due to your server not supporting these connection methods) it can fall back to a proxy. The proxy is not ideal, but still it does not get access to your OMEMO keys.
Since Converse.js is simply HTML+Javascript it is very easy to deploy to anywhere that can serve static files, and it's ideal when server operators provide an up-to-date version on their own site.
As an alternative, I use xmpp (Ejabberd or Prosody with Coturn) with Conversations on Android for text, audio and video.
For a web interface I use Converse.js (only text and files, with omemo)
Jitsi-meet uses xmpp but I didn't managed (yet) to have it working with my ejabberd server.
And, a full options web client is Movim (text, files and video). Regarding security, OMEMO is available on Ejabberd, Conversations, Converse.js and Movim. Jitsi-meet encrypts 1 to 1 communications for sure, you might dig up for many-to-many encryption.
False Alarm! I discovered that Jabber seems to be an IM service on a XMPP network. Seems to work with many different clients that support XMPP.
For anyone else who stumbles across this post in the future, I am using https://conversejs.org/ and it seems to be working.
EDIT: HERE
Then you might want to look at Converse.js which is a javascript XMPP client:
404.city has an example:
Actually forgot there is a web version! Since this is just a chat bot running on the xmpp network you can use any client you like. Here is a web client you could use.
Also, worth noting here, all the apps and the protocol used are open source including this web app.
It supports OMEMO, but depending on how you use it, there are some things to consider:
1) If you select "this is not a trusted device" when you login, OMEMO is disabled to avoid a false sense of security. If you say it's a trusted device, the padlock should enable OMEMO.
2) If you install conversejs on your own server or computer, there's a good chance you need to supply your own OMEMO js file, because it cannot be bundled with conversejs due to different licenses. Chimeverse has a compatible license and bundles OMEMO.
https://conversejs.org/docs/html/features.html#end-to-end-message-encryption-xep-0384-omemo
(Disclaimer: I'm from Tigase team)
XMPP requires both server and client. In case of server I could recommend you Tigase XMPP Server (https://tigase.net/xmpp-server). You can follow our video guide for installation instructions (https://www.youtube.com/playlist?list=PLc0oiHeTWN18c5ydcYltsKtW_EKcwPJLX)
It does come with bundled web client, but you can use alternatives ( for example https://conversejs.org/)
For those who cannot use Discord for whatever reason, I've set up a Channel on XMPP.
You can get there from any xmpp app you choose (desktop or mobile) on any provider (xmpp.is, tchncs.de, etc.) or browser: https://conversejs.org/
I'm surprised no one has mentioned this: browser based xmpp client with OTR (end to end encryption) accessed using the tor browser.
Converse.js is pretty decent and is open source.
> I'd rather use some existing library/software that can be extended, than build something on my own.
I wouldn't do it server-side in PHP only. I'd use JS and a client-side solution.
Have you seen Converse.js which is a client-side (JavaScript) interface to any kind of XMPP server? Se here for a list of prerequisites.
> I can have control over authentication through some api
If you have control over the XMPP server you automatically have control over authentication. Handling authentication is the server's job, not the client's job.
> Keeps history
If the server supports XEP-313 then it works. Converse.js supports that.
> Is searchable ( maybe through API, or I have access to database)
Searchable in what context? XEP-30 is commonly supported by all servers and clients. This is some type of searching. All you need to do is register services.
> Can be used realtime
Eh? What? Yes, of course?
> Can encrypt messages ( i don't know how this would affect searching ).
Converse.js supports OTR encryption.