Once users have uploaded data to the service, they should be able to go to a page that shows them their data and allows them to download any subset of it (the whole thing, a single file, etc.).
Code like https://stackoverflow.com/questions/44185486/generate-and-stream-compressed-file-with-flask will let us stream compressed files back to the user. Even if we let them choose between a few different formats, this shouldn't be that hard. Alternatively, we can defer everything to the backend system itself (S3?). It should be possible for a user to acquire a "token" (pre-signed download URL?) that lets anyone download the data.
The hard part will be the data browser itself. There are some paid "web components" like https://www.syncfusion.com/javascript-ui-controls/js-file-manager and https://webix.com/filemanager/. In addition to having to pay for them, it's also not clear how customizable they are. Our browser won't have an upload option, for example. We may also want it to reflect some of our own idioms. Given the above, it may be simpler to roll our own, even if it means re-inventing some parts of the wheel.
Once users have uploaded data to the service, they should be able to go to a page that shows them their data and allows them to download any subset of it (the whole thing, a single file, etc.).
Code like https://stackoverflow.com/questions/44185486/generate-and-stream-compressed-file-with-flask will let us stream compressed files back to the user. Even if we let them choose between a few different formats, this shouldn't be that hard. Alternatively, we can defer everything to the backend system itself (S3?). It should be possible for a user to acquire a "token" (pre-signed download URL?) that lets anyone download the data.
The hard part will be the data browser itself. There are some paid "web components" like https://www.syncfusion.com/javascript-ui-controls/js-file-manager and https://webix.com/filemanager/. In addition to having to pay for them, it's also not clear how customizable they are. Our browser won't have an upload option, for example. We may also want it to reflect some of our own idioms. Given the above, it may be simpler to roll our own, even if it means re-inventing some parts of the wheel.