This repo is for planning, and possibly implementing an MVP for, a SIMPLE and LIGHTWEIGHT open source chat tool for teams or communities.
Inspired by the Discord model of having "servers" for different topics, communities or teams, each server having a mix of text channels for different purposes and voice/video channels for realtime communication.
A big aim is to keep the code minimal and simple/straightforward, so it stays lightweight, easy to run and maintain, and possible to be forked and maintained by communities.
To achieve this, we'll use open source components where possible and applicable - but only if they meet certain criteria. One of the big ones is to try to avoid any codebases that seem too "corporate", as such things will inevitably have paying corporations' interest in mind over independent, small groups of users.
Since i personally am a big fan of the "forward-auth" model used by caddy + authelia, we'll build on this - giving us a big advantage of not having to worry at all about authentication, since any user connecting to our service will already have the correct "Remote-User" and "Remote-Groups" headers. Authelia can use various backends, such as file-based, LDAP or OIDC.
Video Conferencing and Screen Sharing are pretty complex features if they are supposed to work on a large variety of browers and operating systems. Luckily, there's an amazing open source software for these: Jitsi Meet. Yes it takes a bit of time to set up, but once it's running it really works great, as proven by running on shiny.space for quite a while now. smooth updates, low resource impact. There were a few bugs here and there, but compared to setting up some custom solution, Jitsi is absolutely worth it. Both Jitsi and Authelia could be reconsidered in the future, but in 2025 these seem like great picks for very important features.
What's missing: a solid API that's easy to use and straightforward, allowing us to build various frontends or clients with relatively little effort and good performance.
my plan: a Go backend with convenient APIs for /rooms, /channels and /messages that allow simple and straightforward clients and frontends. Data can be stored in either an sqlite file, or once it becomes necessary as the project matures in a Postgres database (or maybe some other mature, FOSS database that fits this usecase even better).
We'll need a simple reference implementation for a frontend, ideally a website for the chat component, as jitsi runs well in the browser too so we can keep complexity low. but if libraries are available a downloadable executable that can act as a desktop client or mobile app would be useful too.