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.
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.
EXIF data is parse and stored on a Photo node. Data stored is:
For each asset we generate a preview asset, and store that previews location in the graph.
For photos we store webP file locations on the Photo node.
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.
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]).
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).
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).
To add a new command line command
$HOME/go/bin/cobra add {name of command}