References
Development
The app was developed as a proof-of-concept for working with Aspose SDKs . The development of the project spanned five days.
Tech stack
- ASP .Net Core 8
- EF Core
- System.Threading
- Aspose SDKs for .Net
- React
- Tanstack Query
Features
- File previews
- Shareable download links using base64 encryption
- React web client
Potential improvements
Server
- Host the background service on a separate server, possibly with Hangfire. This would put less of a strain on the main application server.
- Utilize a database server like SQL Server for file information storage. This would enable easier connections for distributed application servers, possibly reducing latency.
- Package the application in a container, possibly Docker for easier deployment to more platforms. Currently, the backend server requires a Windows host.
- Optimize the preview generation by resizing and compressing preview images.
- Allow for the streaming of large files during uploads and downloads. The app currently places a file size cap in order to prevent uploads from exhausting app resources during concurrent file uploads.
- Add automated integration tests to cover the document REST API in order to reduce the time spent testing said API manually. The tests would also help flag any potential issues before release.
- Utilize XSRF tokens for file uploads to improve security
- Utilize Blob storage on the hosting platform as temporary file storage is severely limited.
- Enable access of shared files via a CDN to reduce latency.
- Generate shorter URLs for the shared file links. This would likely require another database table.
- Host a websocket server for communicating file status to the client. Currently, the web client obtains this information via polling.
- Implement multiple file downloads
- Handle upload and download of 3D files
Client
- Implement a proper authentication system that includes improved security for the auth token.
- Utilize a data table to enable the selection of multiple documents for batch processes.
- Track file status via websockets as an alternative to polling
- Enable the preview of 3D files, including large ones.
- Extract the preview pane into a separate page or modal to allow for more actions e.g 3D orbits on the document.
- Create a separate page for viewing information about a single document