Personal Photo Gallery (Geo-enabled)


I always thought photographs did an excellent job of marrying together time, location, and experience into a rich datapoint – something I wanted to track throughout my lifetime. Back in 2012 I began building a system to facilitate the capturing of this information.

The project has since expanded into a Photo Gallery website with over 10,000 photos and videos, 300+albums, and managing close to 60 gigabytes of assets (luckily media is stored on AWS S3).  My geo-footprint from the service is below; you can also visit the full site here. CAUTION: the UI hasn’t been updated since 2013!

Google maps to be initialized here..

What: Custom website built to enable the cataloging of photos and videos, with support for photo metadata extraction, geo-tagging, user captioning, and easy search & retrieval.

Technologies: Ubuntu Linux, Postgres SQL Database with PostGIS extension, PHP, REST APIs, Amazon Web Services (S3, Elastic Transcoder), Google Maps JavaScript API v3, jQuery

Diagram displaying the various technologies used in my Photo Gallery project. The main coordinator is an Ubuntu Linux container, with a REST API written in PHP, which handles the bulk of photo metadata processing and retrieval. Amazon Web Services, specifically S3, is used for photo file storage. Metadata is stored in a Postgres database, and geospatial functionality include geotagging and location-based search is used throughout the application, taking advantage of Postgres's PostGIS extension. The Gallery also supports queued photo processing, and uses AWS's Elastic Transcoder Service to encode videos into acceptable HTML5 video formats (now mp4).

Start: December of 2012

Recent Improvements: In early 2017,  I migrated from MySQL intoPostgres/PostGIS. The main motivation for this was to take advantage of PostGIS’s geospatial features (location-based searching, storage of more complex geometries like polylines for hiking routes, etc.). Along with this migration, I realized that Postgres supported dates with timezones, and updated my existing photo data and import process to pay attention to dates with timezones. I also added support for uploading GPX tracks, which I had begun accumulating may of

Possible Future Improvements: Frontend re-vamp (current HTML & CSS is from 2012-2013), addition of GeoServer and proper OGC APIs like WFS and WMS (especially since my polyline data set is already larger than 1megabyte when sent over the wire in vector format; it would be nice to rasterize this data and expose it as a WMS layer instead).

Inspiration: This project grew out of the on-going frustration I faced with cataloging my travel photos in a single accessible location. What started as a simple custom CMS on a L.A.M.P. stack has grown to include technologies like AWS S3, and geo-spatially enabled functionality provided by PostGIS/Postgres.