Photostovis is a project that I started in 2013, hoping to create a product for storing personal photos and videos from varying sources in one's home (personal/home cloud), for privacy reasons. At some point in 2015, before finshing it, I run our of money so I was forced to start freelancing. Nevertheless, Photostovis is currently usable, although some features are missing. I am using it myself for storing my personal (and some friends') photos and videos.

Photostovis aimed to replicate a cloud experience for the owner: photos and videos can be viewed from anywhere with Internet and sharing albums (or even the entire photo collection) is possible. Photostovis was designed to run on a very limeted hardware, such as those found in home routers. As such, an SBC such as Raspberry Pi is a very powerfull hardware for the Photostovis server.

Technically, Photostovis is a client-server web application. The client is a normal HTML/CSS/JS page (not optimized for touch) and the server is a specialized/custom web server written in C. There is no DB, the server loads all the photo information in memory (some tens of MB for 1 million photos) so it can send the collection metadata very fast. Thumbnails are created by a parallel process and, if the hardware has enough memory, some of them can be cached in RAM (this gives the impression of instant start while the HDD - where the content resides - starts spinning and wakes up from sleep). The server calculates the client bandwidth, estimates the speed with which the client is looking at photos and resized the next photos in real-time on the server so that the user experiences instant photo loading, whenever possible. Ideally, while the user looks at a picture, the next one is transfered from the server and the one after is fast-resized to an optimal size.