Urocissa 0.5.0 released: A Self-Hosted Gallery for Millions of Images and Videos

51 points Individual_Spray_355

https://preview.redd.it/jozyrzakrd8e1.jpg?width=1920&format=pjpg&auto=webp&s=85ebc7227b1ff54a46732c6297d4a8329e65a638

Urocissa is a self-hosted gallery designed to handle massive collections, supporting millions of images and videos. It’s built with Rust for the backend and Vue for the frontend, combining performance and usability.

It’s been two months since I introduced Urocissa 0.1.0, and I’m thrilled to announce the release of version 0.5.0! Over this time, Urocissa has undergone significant changes, and one of the most noteworthy improvements is the complete elimination of hot loops in the application.

Previously, Urocissa relied on hot loops to continuously check for new tasks or clean up caches. Even with sleep intervals, this resulted in many unnecessary checks and a slight delay in task handling. Thanks to Rust’s robust support for async programming and multithreading, I’ve replaced all these hot loops with Tokio’s notify mechanism. This optimization has led to a noticeable improvement in efficiency.

The reason I didn’t implement this earlier was the learning curve associated with Rust’s async programming, especially when combined with CPU-intensive tasks. At the time, my skills weren’t sufficient to tackle this complexity. Looking back, I’m delighted to see the progress I’ve made in developing my skills.

I also wrote a brief article explaining and providing the minimal code used to achieve this optimization. I think this might be helpful to some people.

If you’d like to try Urocissa, the project now supports one-click deployment with Docker. You can also check out the demo in the repository.