The inspiration for Picasera was born out of a collective sense of loss after Picasa was retired. I felt like the world didn’t just lose a photo viewer. It lost a design philosophy. New solutions felt uninteresting, bland and uninspiring. This is my attempt to challenge that.

What it does

Picasera is a fast, privacy first image organizer and viewer. It is intended to be spiritual successor to Picasa, resurrected and designed for the modern era with cloud support but respects your data.

How we built it

I wanted a stack defined by performance and safety but flexible that would allow for rapid development. Researching, I came across Tauri and Rust. A stack that I have zero experience with and would be learning as we went along, so I needed to let Kiro do most of the heavy lifting to get us going. From conceptual to MVP, I believe that it exceeded my expectations.

Most of the heavy lifting is done by the Rust backend such as allowing us to generate thumbnails for thousands of images using parallel processing, offering color matching, tagging and rating photos without freezing the main thread. Instead of shipping a heavy Chromium instance through something like Electron, Tauri allowed us to use the native OS webview to keep our application install size lower and lower the demands on memory needed for the application to work.

A local SQLite database accessed via Rust is used to store the index, metadata and thumbnail paths to facilitate instant search results and advanced filtering.

Challenges we ran into

Getting started with Kiro necessitated a change in how we approached and understood development especially the process working with an AI partner. Previous attempts at AI often make you feel like you are arguing with a ghost in the machine when trying to get it to fix bugs. It took a little while to understand but once we saw how the specs and steering feature worked, we were able to rapidly progress as well as keep the project on track.

Most challenges faced, occurred due to wanting to expand the scope to much more complex features after seeing how quickly some earlier features were completed and having to go back to reduce the scope due to the deadline while we worked on refining the core concepts and functionality.

Things I would love to see improved There were a high number of 'session too long' notices which I felt should happen automatically and not have to manually click to summarize and proceed. Chat would randomly freeze and not show what step was needed next or provide responses. Restarting the app if this took place would often solve the use.

Accomplishments that we’re proud of

I am amazed at how rapidly we were able to produce a working desktop app just from a few a concepts. Specs and the steering documents made it much easier to keep track of initial goals as well as guiding Kiro and myself back on track through multiple sessions over the last couple weeks. I was also intrigued by how easily Kiro was able to, in many cases, reflect exactly on screen what I was thinking, or was able to work through it through the iterative approach. I was even able to get a simple extension system working so that users can create new features on their own to enhance the app further.

What we learned

Virtualization was key for UI performance. Understanding how the DOM is rendered in the end mattered just as much as optimizing the backend to handle a higher volume of photos. Since analyzing and processing photos is intensive I had to go through several rounds with Kiro attempting different solutions to offer a balance between showing the user photos as fast as possible while also processing the remainder and still trying to keep memory usage down.

What’s next for Picasera

This is just the beginning. There are many features which we had to pause due to time constraints but I'd love to continue developing it to include more complex features such as face tagging, activity filtering, optional integration with cloud providers for backup and optional AI integration for enhanced photo editing and analysis as well as refining existing features and improving performance

Built With

Share this project:

Updates