## QChat đŦ Let's chat in QGIS!  Lightning Talk - March 2025 Guilhem Allaman - OPENGIS.ch - Geotribu ---- ### How it started One day... In July 2024...  Thanks, QField plugins framework đ ! ---- ### âī¸ Phone call with Julien Moura (Geotribu&Oslandia) - Hey! Why not chatting in QField ? - Hey! Why not chatting in QField **and** QGIS ? - Hey! Why, actually !? - Hey! Why not ?? :copyleft: Geotribu âĸī¸ÂŽī¸ÂŠī¸ ---- ### Let's start with a QGIS plugin [QTribu](https://plugins.qgis.org/plugins/qtribu/) QGIS plugin: - already set up - registered on plugins.qgis.org - functional and running GitHub CI  ---- ### QChat Philosophy - Let's study existing open chat protocols (IRC, jabber, matrix... đŋ) -> Let's actually [K.I.S.S.](https://en.wikipedia.org/wiki/KISS_principle) đ - Let's make it open and accessible to anybody -> You have a QGIS installed -> You can chat đŦ ---- ### QTribu QGIS plugin dev - At the beginning: postgres's `LISTEN` / `NOTIFY` mechanism considered - Choice: websocket connections to server -> `QtWebSockets` available in `pyqgis` đ - Settings [using the QGIS plugin templater](https://oslandia.gitlab.io/qgis/template-qgis-plugin/) - `QgsDockWidget` -> keep it fluid and parallel ---- ### đŦ In the meantime, somewhere  ---- ### Main features - Send text messages to other users - Embody a _fancy_ avatar (native QGIS icons) - Ping other users with `@jane_doe` / `@all` - Notifications: QGIS message bar, sounds... - Like messages đ - Share vector layers via `geojson` - Share images and QGIS map canvas screenshots - Share CRS / extents ---- ### QChat Backend - "gischat": [hosted on GitHub](https://github.com/geotribu/gischat) #gischat #yay - Written in python - FastAPI - Websockets dispatcher - No database: just _stateless_ websockets đ - Docker image on [DockerHub](https://hub.docker.com/r/gounux/gischat) and [GHCR](https://github.com/geotribu/gischat/pkgs/container/gischat) - Deployable on a server using a KISS đ `compose` stack -> 1 single service + a few env variables ---- ### QChat ops đ¤ 3 server instances running at the moment: - `gischat.geotribu.net` -> everybody welcome, please speak đŦđ§ - `gischat.geotribu.fr` -> everybody welcome, please speak đĢđˇ - `staging.gischat.geotribu.net`: staging Also: âī¸ [instances directory](https://github.com/geotribu/gischat/blob/main/instances.json) on GitHub repository (JSON file) ---- ### đŦ Demo  ---- ### What about now ? - Some random people sometimes use it - Some bug fix, sometimes... - Backend test coverage: `93.7%` đ đ - QTribu plugin test coverage: `NaN%` (...) đ ---- ### What about later ? - Create some compats through bridges with `matrix` servers (complex) - Create a specific `"QChat"` QGIS plugin on plugins.qgis.org - Implement more funny stuff: emojis, sounds, threads, easter eggs... - QField plugin, of course đ ---- ### A bottle in the sea Feel free to spread the word about the QChat in your upcoming QGIS talks and teachings đ Could be nice to bring even more emulation in the QGIS users community! ---- ### Thank you for your time  âđŽâ any questions âđŽâ