revoltchat / backend

Monorepo for Revolt backend services.
https://developers.revolt.chat/api/
Other
1.1k stars 121 forks source link

🎊 Refactoring the project into smaller distinct crates for developer productivity. #239

Closed insertish closed 3 months ago

insertish commented 1 year ago

So I've done a bunch of design work around the architecture / strategy and ended up with a nice solution for developing the backend going forwards which I'll get into below.

First of all, the main driving motivations behind this are to:

There are a couple conditions with this refactor though:

So, here's what's changed:

There are also some things that need to be sorted out still:

You can read the new code on the refactor/split-project-into-core-crates branch (which will be merged in the near future). These changes will also be used to test #210 (webhooks) before it is merged in.

Future plans:

Note: If I forgot something, I'll edit the post and also mention it in the comments that it's changed.

Remaining models and implementations:

Other issues to tackle:

insertish commented 1 year ago

Just added a presence crate to core with a unit test covering the whole crate. Found one issue with how I was handling flags in the mean time and that's been fixed now.

insertish commented 1 year ago

Overall progress for porting models:

moved to OP

insertish commented 3 months ago

delta now no longer uses quark and only relies on core crates bonfire TODO (but it'll be a much faster and smaller job)

insertish commented 3 months ago

this took a year :clueless: