Storing photos efficiently is great, but what's the use if we can't easily view and share them? I don’t want to just send folders of images via email—I want a seamless way to rediscover and showcase my memories.
Eyedeea Photos is an app designed to bring forgotten memories back to life. It integrates with Synology Photos and any USB, HDD, or SSD to display random photos from your collection. Here’s how it works:
- Scan: Interacts with Synology Photos API or the file system to extract metadata (filename, path, date taken, geolocation, album name, etc.).
- Show: Displays random photos across devices.
I recommend to run it on a Raspberry Pi within your home network, making photos easily accessible on TVs, laptops, and mobile devices. However, it's a lightweight website (~125MB) that can be deployed on any laptop or desktop.
Photos are displayed with the following details:
- Title: Smartly formatted directory name.
- Subtitle: Date taken and geolocation formatted as [Place, Country], if available.
- Sub-subtitle: Name of the file.
- You can trigger the scan manually by calling the API - POST /api/sources//scan. UI will be available soon!
- Eyedeea Photos will re-scan every night at 1AM. You should turn this off if you do not modify your photo repository very frequently.
- The server will serve 1 photo every minute.
- You can download & perform other operations using the hidden toolbar.
- Written in Node.js, with a Synology Photo API wrapper that scans the photo repository and extracts metadata into a flattened structure.
- Storage-agnostic: Currently it supports two sources: (1) Synology Photos and (2) File System like USB, HDD. But it can easily extended to support other cloud providers like Google and Amazon Photos.
Feature | Details | Technology | Status |
---|---|---|---|
Eyedeea Photos Player | Scan photos, random playback, filtered playback, search, configurable scan times, display duration, and logs. Read metadata (tags, taken-on date, geolocation) | Node.js, SQLite, PM2, Apache | Beta Testing |
Eyedeea Photos Management | An user interface to set up sources, configure filtered playback, search, configure scan time, statistics, view logs. Read metadata (tags, taken-on date, geolocation). Targeting for 2025 summer. Experts can use Postman and call Eyedeea Photos API to perform all these operations |
Node.js, HTML, CSS | Incubation |
MetaFix | Update metadata (tags, taken-on date, geolocation) | Node JS, Python, ExifTool | Requested |
Duplicate Identification | Detect and mark duplicate photos | Python | Requested |
Out-of-Focus Detection | Identify and mark blurry photos | Python | Requested |
- Not a photo management app: Users must handle organization, metadata updates, and deletions themselves.
- No warranty: Users assume full responsibility for any issues.
- Built for home networks: No authentication system is currently implemented.
- Primary focus is display: Users must collect and arrange photos beforehand.
- MVP deployed on Raspberry Pi 5, regularly used on two Amazon FireStick devices via the Silk Browser. FireStick sleep timeout disabled using ADBLink.
- Personal Results:
- 42,000 photos identified, 12,000 duplicates removed
- Corrected multiple album names (inferred from folder names, with formatting improvements)
- Scanning 30,000 photos from Synology takes ~6 minutes. The same number from file system takes about ~3 minutes.
- Family Impact:
- Enjoy random memories resurfacing.
- Easily spot incorrect albums and duplicates.
- Discover surprising, long-forgotten moments.
My folder structure looks as follows, but the code should traverse through any folder structure.
Many of us have multiple accounts across platforms, leading to scattered memories. You can download all your photos, clean and organize them, and then use Eyedeea Photos to view them. This also helps identify duplicates and correct album (directory) names, creating a better photo repository.
I migrated all my photos to Synology NAS. If these questions intrigue you, keep reading:
- Where do you store your photos?
- Do you know how many photos you have?
- How often do you revisit your entire collection?
- How much are you paying for cloud storage?
Most of us sync our photos to multiple cloud providers. They lure us in with free storage, then charge hefty fees as our collections grow. Their business model relies on:
- Leveraging our data to train AI models and develop new tools.
- Charging for storage.
Privacy is a major concern—I don’t want my photos stored with someone else.
- Privacy Risks: Cloud providers scan photos for metadata—faces, locations, timestamps. With this data, someone could map out my travel history.
- Duplicate Photos: Multiple services prompt me to sync photos, creating redundancy.
- Disorganization: Without proper management, photo collections become overwhelming.
- Limited Sharing Options: I want seamless access across devices (TV, laptop, mobile).
- Multiple Providers: Due to varying features and costs, a single provider isn’t reliable.
I built my own Network Attached Storage (NAS) using a Synology DS923+, ensuring data redundancy and high availability. My photos are accessible within my home network and remotely—without recurring fees or third-party dependencies.
To mitigate risks, we can use following two backup strategies:
- Cloud Backup: Back up my NAS to affordable cloud storage like AWS S3 Deep Glacier ($0.0036 per GB/month). I am using this.
- Physical Backup: Periodically copy encrypted backups onto external SSDs/HDDs and store them in a separate location.
I also declutter my collection by removing duplicates and keeping only meaningful photos. With 30,000 photos, I expect to stay under 1TB for years, making cloud backup affordable (~$50 per TB per year).
I end up setting up NAS. But, you can simply migrate your photos to an external SSD or HDD. But keep at least one replica and, if possible, a geo-redundant backup. With this setup, your photos are secure, organized, and easily viewable—providing peace of mind and a better way to enjoy memories. No hefty cloud fees, no privacy concerns—just our photos, our way.
NOTE: After installing we will set up one source, this is temporary solution until we have Eyedeea Photos Management user interface is ready!.
Windows | Linux | Mac |
---|---|---|
Download Install Scripts and execute ./install.ps1 on Windows Powershell |
Download Install Scripts and execute sudo ./install.sh on terminal |
Use Expert |
- Install Node.js
- Install npm pm2 globally
- Install npm eyedeeaphotos
- Configure pm2, optionally configure Apache HTTP server
NOTE: Remember he IP address of the server. Henceforth we will call this device as Eyedeea Photos server.
After installing, make sure that you triggered scan mannually. And once scanning is completed, you can access it.
- On the server, access it using http://127.0.0.1:8080
- On other devices, access it using server intranet IP Address e.g. http://192.168.1.112:8080
- We can configure Apache server to access it without the port like http://192.168.1.112
- We can also configure it to access it using hostname like http://eyedeea recommended
Source Type | Extract Address | Cost | Explanation |
---|---|---|---|
Synology NAS(DS923+) | Available | Free | Thanks to Synology, it comes with built in scanner to convert geo-location to address. |
File System | Optional | About $5 per 1000 addresses. Details at Google | If configured, Eyedeea Photos will call Google Geolocation API only when (1) your photo meta data has geo location and (2) call only once per photo, even if you rescan multiple times. You will be directly paying to Google. |
- Website Template: https://html5up.net
- Synology API Documentation: GitHub by zeichensatz