S3 Manager
Hi everyone, I’m excited to share with you a project I’ve been working on for the last few months. It’s a graphical user interface to aws s3 service, which lets you easily manage your buckets, files and permissions. I have wrote it using Rust lang in the backend and svelte for a frontend, and I want to tell you how fun it was working with rust backend.
Rust is a systems programming language that focuses on performance, reliability and concurrency. It has a powerful type system, memory safety guarantees and a rich ecosystem of libraries and tools. Rust also has some unique features that make it a great choice for backend development, such as:
- Ownership and borrowing: Rust uses these concepts to manage memory and resources without a garbage collector, avoiding runtime overhead and memory leaks.
- Traits and generics: Rust allows you to define abstract interfaces and implement them for different types, enabling code reuse and polymorphism.
- Async/await: Rust supports asynchronous programming with a built-in syntax that makes it easy to write concurrent code that is readable and efficient.
- Error handling: Rust has a robust and expressive way of dealing with errors, using the Result and Option types and the ? operator.
Using Rust for the backend of my GUI project was a rewarding experience. I learned a lot about the language and its features, and I enjoyed the challenge of writing fast and reliable code. I also used some awesome crates that made my life easier, such as:
- Tokio: A runtime for writing async applications with Rust.
- Rusoto: A AWS SDK for Rust.
- Warp: A web framework that provides a simple and elegant way to create RESTful APIs.
- Sveltekit: A framework for building web applications with Svelte, a reactive frontend framework that compiles to vanilla JavaScript.
The result is a GUI application that is easy to use, responsive and cross-platform. You can download it from my GitHub repository (link below) and try it out yourself. I hope you find it useful and fun to use. If you have any feedback or suggestions, please let me know in the comments. Thanks for reading!
LightMode UI overview
#1F2937
#52525b
#F9FAFB
#FFEDD5
#FFF7ED
Aa
Roboto Bold
Aa
Roboto Normal
Aa
Roboto Light
Aa
Audiowide Bold
Aa
Audiowide Normal
Heading H1
Heading H2
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent suscipit tortor velit, non posuere leo hendrerit sit amet. Sed purus felis, blandit ac tristique id, consequat at purus. Nulla eget dignissim erat, eget suscipit velit. In hac habitasse platea dictumst. Curabitur nec laoreet tellus, vitae convallis eros. Morbi accumsan libero vitae venenatis vestibulum. Proin blandit scelerisque nisl eu sagittis.
Dark Mode UI overview
#1E293B
#0F172A
#FFEDD5
#FFF7ED
#F9FAFB
#FFF
Aa
Roboto Bold
Aa
Roboto Normal
Aa
Roboto Light
Aa
Audiowide Bold
Aa
Audiowide Normal
Heading H1
Heading H2
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent suscipit tortor velit, non posuere leo hendrerit sit amet. Sed purus felis, blandit ac tristique id, consequat at purus. Nulla eget dignissim erat, eget suscipit velit. In hac habitasse platea dictumst. Curabitur nec laoreet tellus, vitae convallis eros. Morbi accumsan libero vitae venenatis vestibulum. Proin blandit scelerisque nisl eu sagittis.
Installation files
Features
- Dark and light mode dependant on system preferences
- Files, Pictures, Movies and buckets gallery (grid style)
- Optimized for looking through the pictures / movies, lazy loading, images and movies streamed dritecly from the bucket, are loaded with presigned urls.
- Adjustable grid gallery
- Simple name search
- folders filtering in movies and images pages
- Tagging of assets
- Folder creation
- Multi file upload (drop files)
- Galleries remember scroll positions while navigating the app.
AWS Account
In order to use the application you need aws account with s3 service activated. S3 app uses standard aws config files used for aws cli connection info here.
1~/.aws/credentials
1[default]2aws_access_key_id=AKIAIOSFODNN7EXAMPLE3aws_secret_access_key=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
1~/.aws/config
1[default]2region=us-west-23output=json
Alternate s3 endpoint
Set env vars S3_CUSTOM_ENDPOINT
to true
or 1
at your machine to alter the
s3 default endpoints Set the alternative endpoint url with
S3_CUSTOM_ENDPOINT_URL
env
Rust lang (cargo) and node.js (npm or yarn) and tauri-cli instalations are needed to run / build the project from source
This application is based on tauri.app, RUST lang in the backend (core of the app and frontend things are handled by svelte + vite + ts combo.
Simple division: Rust manages the data and the calls, front end displays the data.
Github info
https://github.com/MassivDash/S3_Manager
Don’t forget to ⭐ the project if you found it helpful.