The biggest challenge was media uploads. The user should be able to upload any amount of media files to any amount of channels – this consumes an enormous amount of memory and bandwidth.
At the same time, we had to make sure that the app is still responsible while the upload is progressing.