orange
orange copied to clipboard
Ideas on making Calls service easier to get started with
Hello, it's me again 😆
I've learned a bit and continued down the rabbit hole of this question since I initially talked to some of the team working on Calls.
This stuff is a lot of work. Looking towards some other open-source alternatives like livekit, fishjam, etc. You need a server for signaling etc and a client library/UI kit to support different platforms (maybe for ya'll it just make sense to have a web kit which you already kinda have). It pained me to see literally everyone building almost the same thing and it made me sadface. (I even considered a mock livekit server that proxied to CF Calls and just handled signaling)
You all have done an amazing job building a lot of this stuff out in this repo. I think the main thing thats missing is the packaging. I think that orange
would be the perfect fit for how partykit
is setup. I could be completely wrong but my intuition says that most people would want an easy way to integrate Calls in their applications. Deconstructing this repo and taking bits and pieces out of it is a tough DX.
I've been prototyping this idea a bit but still not sure how far I want to take it considering that you all might have your own plans and also the pain of reinventing the wheel for the 40th time. I also don't feel comfortable taking someone elses hard word and repackaging it.
I'll just share my general idea here and see where that leads.
Packages: CLI tool, Worker, JS client, React UI kit
- CLI tool - Pretty much what
partykit
does. I can imagine many uses for this down the line but initially just managing the CF worker on the users account. deploy, upgrade, etc. - Worker - Auth and signaling. This can be versioned with the js client and handles room state/signaling and some standard access control features via JWT's
- JS Client - I do like the idea of splitting this out from the UI kit but self-explanatory
- React UI Kit - Client and UI kit is pretty much already done in here :)
I think having the CLI tool and worker are the most important bits. If there's a standard there that people can just easily deploy to their Cloudflare account they can easily reference the client and ui kit to make the same for iOS, Android, etc
Edit: The main downside to this approach is the Worker pretty much defines everything for the app since it controls the state and it's impossible to make everyone happy. Looking at other similar offerings though they make the same trade off. As long as it can support most features that users might expect