Articles in this topic
Extract width, height, duration, codec and frame rate at ingest with Sharp and ffprobe, then store them in Postgres columns plus a GIN-indexed jsonb column.
Read article →Index uploaded-file metadata in Postgres with jsonb_path_ops GIN, expression and partial B-tree indexes, then prove the planner actually uses them.
Read article →Build full-text search over uploaded file metadata using PostgreSQL tsvector and tsquery, a GIN index, ts_rank ranking, and JSONB metadata filters.
Read article →Read capture date, camera, GPS and orientation from uploads with a long-running ExifTool process, normalise the values, store what you need and strip the rest.
Read article →Store each unique file once — hash uploads with SHA-256, keep a blob table with reference counts, skip re-uploads the server already has, and delete safely.
Read article →