Hello, and welcome to the Colibri alpha! We're happy you found this post - it means you've probably already tried out Colibri! (If you have stumbled upon this some other way, head over to https://colibri.social!)
The Current State of Things
Colibri now being in Alpha means we've only just gotten started! Here's an overview of what you can do right now when logging into Colibri:
Create Communities, Categories and Channels (Text & Voice)
Join other Communities
Chat with people in public, with everything from messages to reactions being stored on your PDS
Jump in a voice chat and voice/video chat with people
Adjust your Bluesky profile, status and voice settings
That's the top level overview. We're happy with what we've been able to build as an alpha version, but we would like to expand on this functionality and allow for more ways to chat on ATproto. So, here's some things that are planned for the next few iterations.
What's Next for Colibri
There's a few things we're hoping to get working in the near future:
The ability for community owners to force-mute and remove users from voice chats
A command palette for quick navigation
A new "@time" mention and associated facet to display relative timestamps in the chat for easy coordination
Better and full context menus
Maximum uses for invite links
Bot Label support
Support for mobile screen sizes
The ATproto community has also been working on a proposal for permissioned data, which we're hoping to support as soon as possible. We're currently looking into how these permissioned data spaces could enable better moderation and permission systems, fully private communities, and more. Stay tuned, we'll be sure to post more on this Leaflet!
There are some internal things going on as well. Besides the aforementioned features, we're hoping to completely refactor the internals of both the app and the app view, to allow for better performance, less bugs, and a more scalable architecture (which would in turn allow for desktop and mobile apps!)
The Technical Nitty Gritty
This section will delve into the specifics of the architecture we're hoping to implement in the coming weeks and months. It'll be fairly technical, so if you don't care about that, feel free to skip to the next heading!
The current system relies on a two-tiered system between the web-app (written in Astro and SolidJS) and the app view, which is written in Rust. There are two databases, a Redis node only used by the Astro backend for embed data and OAuth states, and a Postgres database only used by the app view. The Astro backend handles OAuth, while the app view handles voice-chat functionality, real-time updates for basically everything, and backfill functionality, which in turn is calling a self-hosted Jetstream instance. This setup is highly convoluted and not easy to port to other platforms. We've thus decided to rework it from the ground up, with a big refactor on the app's side and a full rewrite of the app view.
Here's a quick overview diagram of how we want the new architecture to function:
The new center piece of the application architecture is the reworked app view. It now handles OAuth functionality and real-time functionality, alongside the voice chat capabilities specific to Colibri (which are powered by Livekit), and embed data, all of which is stored in Redis.
The backfill functionality and data storage of those records is now handled by Tap, a tool made by Bluesky to handle this exact task. It is responsible for pulling data from your PDS and saving it in a Postgres database, with the app view being able to subscribe to it for live events. The app view also uses the Postgres database for long-term storage if needed.
The app, which was previously tied to the website, is now a separate SolidJS app, containing no Astro-specific code and being written to be agnostic to it's parent framework, meaning it can be used by the website to display a web version, but also by Tauri, a tool to create desktop and mobile apps based on websites, to provide efficient apps for all devices.
How you can Help
If you didn't know, Colibri is open source! If you're not an expert in coding, or don't have the time to contribute, or simply don't want to (which we don't blame you for), the best way to help out is by reporting issues in the repository of the website. We'll handle it from there.
If you are interested in helping with the rewrite, we'll start with the app view, followed by the refactor of the app. If you know Rust and are interested in helping out, make a discussion post on the app view repository! We'll continue chatting there.
Thanks for reading! Have fun using Colibri and check back on our Leaflet later or follow our Bluesky profile for more updates.