Pictaria
Get the app

Blog

Why Pictaria exists

A photo display that stopped answering questions, a collection scattered across services, and the system that came out of fixing both.

Pictaria exists because of our growing frustration with some Google Nest devices we used as family photo displays. They had been okay at the job, but after an "upgrade," they stopped answering basic metadata questions (e.g., where was this photo taken?). My wife asked me to fix it — so I decided to create our own photo display. I also saw it as a good opportunity to get all our photos, spread across a couple of different services, under control.

Some context

Like many others, my wife and I have taken many, many photos over the years. Until recently, those photos were mostly backed up to Dropbox, with the mobile app automatically uploading new photos from our phones and storing them. We also had Google Photos, which served as both a backup (although not going as far back as Dropbox) and the route to the Google Nest displays. So while I wasn't worried about losing our photos, it did occasionally bother me that we didn't have them all in a single, well-organized place, with at least one copy fully under my control.

First I had to figure out how I would get photos into an app. And Google Photos, with its limited APIs, was not going to help. After some research I decided I would use Immich, an open-source, self-hosted photo-management system, as our photo "system of record," running on a Synology NAS. This would address the two core issues: Immich would be the repository the app would rely on to display photos, and the single place where we could consolidate all our photos. After setting up the NAS and a regular sync with Dropbox (so that every photo still gets backed up to Dropbox, but also makes it down to the NAS), I set up Immich and loaded our photos. Once Immich was in place, I started developing the app that would talk to it and display the photos. I decided to build an app for Android, taking advantage of the platform's openness and the wide availability of different tablet form factors. This is now Pictaria Frame.

But once I had an app connected to Immich, I realized that I had barely started. We had well over 100,000 photos, most of which had not been seen in years. How was I supposed to display them in the app? I could make albums in Immich based on people, places, or date (assuming they had metadata - not all of them did), but frankly, many of the photos weren't that good. We all have collections with unflattering photos, screenshots and receipts, and extremely repetitive bursts (10 pictures of the exact same sunset...). I also didn't like the idea of static albums that had to be kept up to date manually.

So I started building what would become Pictaria Server: first, an app that would create albums in Immich based on different criteria and then keep them fresh by adding or removing photos on a set schedule. Once I did that, I saw a need to better segment photos for albums, so I built a way to "enrich" photos by adding tags and a description using AI. And once I had photos that were enriched by AI, I needed a way to "curate" them and select the best ones. But even as I did all this, something was still missing: a way to better understand what was there, navigate through the collection and select what I wanted to enrich and curate. So I built an interface that allowed me to see the photo collection as an interactive timeline — a histogram with the number of photos taken each year, and the ability to dig into any year to see photos taken by month or week, people that appeared in those photos, the places they were taken, etc. I added many additional touches along the way, and connected Server and Frame through a wake phrase and voice commands — more functionality, in fact, than we had ever had with Google Photos and Nest.

Once this was all done, for the first time ever, we started seeing great photos from across our entire collection, spanning nearly three decades, and organized in albums to suit whatever mood we might be in. And we could do more than ask "when" or "where" a photo was taken, we could ask what was "interesting" about it. In retrospect, it's remarkable that we accepted the previous status quo: thousands and thousands of great memories locked up in the cloud somewhere, very rarely seen. We take more photos than ever, yet enjoy very few of them later, no matter how good they are. That seems wrong.

What Pictaria is

So this is how Pictaria Server and Frame came together. Together, they form a system for understanding, enriching, curating, and displaying the memories in a self-hosted Immich collection.

After putting all this together for our own use, it seemed obvious to me that others might also find it useful. So I decided to package it up and make it available. This took a lot of work! Having something internal that does the job is a long way from putting together something that is polished enough for the general public. That work became the v1 available today.

Server is free and open source, with an AGPL 3.0 license, just like Immich. I'm a fan of open source software and wanted to match the ethos of Immich and self-hosters. Frame is free to use with one small album. Optional one-time upgrades unlock the complete display experience and Pictaria Server connectivity.

Self-hosting your photo collection takes some effort, and isn't for everyone. But it can be pretty satisfying, and those of us who choose it should have excellent tools to manage and display our collections. Better, in fact, than what the large hosted services offer. I have lots of ideas for where both products can go from here, and I'll be building over the next few months. If you find Pictaria useful, I'd love to hear about it. And if you have any feature requests or ideas around it, especially so. Thanks for reading and trying Pictaria!

- DR

Get new posts by email

We'll notify you when we have new posts. Our goal is to be informative and helpful. No spam, unsubscribe anytime.

Something went wrong — mind trying again, or email support@pictaria.ai?

You're on the list — thank you! 🦋