It's not about organizing photos we will never look at - it's about taking a people-first approach to link digital assets to personal memories.
README.md

MemoryLane

It's not about organizing photos we will never look at - it's about taking a people-first approach to link digital assets to personal memories.

Asset Processing

Hashes

Hash are stored as MD5's of the original file. We also store an eTag from S3. The MD5 is for clients to determine if an asset already exists. The S3 eTag is for syncing with S3.

Meta Data

EXIF data is parse and stored on a Photo node. Data stored is:

  • Make
  • Model
  • Date Taken (trying for the best of the various date fields)
  • Lens Make
  • Lens Info

Previews

For each asset we generate a preview asset, and store that previews location in the graph.

Photo Previews

For photos we store webP file locations on the Photo node.

  • Full (1000 wide)
  • Medium (500 wide)
  • Square-medium (500x500)
  • Square-small (100x100)

Blur Hash

To support rapid loading and good UX, we produce and store a blur hash of the large preview file as a string on the Photo node.

Dates

Creation dates are stored in two ways. First on the relevant asset type node, e.g. (Photo node) a 'DateTaken' is stored. Dates are also stored in nodes for 'Month', 'Year' to allow for quick filtering (See [Date Nodes][/models/dates.go]).

Geographic Places

Places are a map layer for collecting and sorting coordinate locations parsed from metadata and stored on relevant asset type node, e.g. (Photo node).

People

Machine learning can be used to detect faces and tag individuals. People tags can be stored as nodes connected to the relevant asset type node, e.g. (Photo node).


Notes

To add a new command line command

$HOME/go/bin/cobra add {name of command}