CloudSafe

CloudSafe is a desktop application I'm building that lets users store files in AWS, Google Drive, Dropbox, etc., with end-to-end encryption. It's built in Next.js with TypeScript and Tauri with Rust. I'm building it to learn more about cloud storage, encryption, and to provide a secure alternative to the more conventionally insecure cloud storage services. It's currently in development and is planned to be released in 2024.

CloudSafe image

One of the problems with traditional cloud storage services is that they are not end-to-end encrypted. This means that the cloud storage provider can access your files, and if they are hacked, your files are exposed. CloudSafe solves this problem by encrypting your files before they are uploaded to the cloud, and decrypting them when they are downloaded. This means that the cloud storage provider cannot access your files, and if they are hacked, your files are still safe.

undefined image

One of the first major issues I faced when I started developing this project was AWS S3 blocking the my frontend from viewing S3 information due to CORS policy. Traditional frontend applications usually should not be accessing AWS resources directly, and would typically use a backend to access the resources. However, I wanted to build a fully client-side application, so I had to find a way to get around this issue.

To address this issue, I used Tauri to build a Rust backend that could handle the AWS S3 requests. Instead of the frontend Next.js application making requests to AWS S3, it sends the request through the Rust backend via Tauri which makes the request on behalf of the frontend. This way, the frontend does not have to deal with CORS issues, and the backend can handle the requests securely.