← azimuthphoto.com

How to contribute

Azimuth is built by one photographer, in the open, using his own archive. Contributions from other photographers who keep their own archives are welcome. You do not need to understand the architecture to help. The project is run from a few plain files, and each one is a way to contribute.

Try it on your own photos

Point it at a folder of your own photos and cull one shoot with the keyboard. The app is developed against one real archive of 150,000 photos. A second archive finds problems the first one cannot: a camera it has not seen, a different folder layout, a drive that is unplugged. Nothing is uploaded, and the app never moves, renames or deletes an original file.

git clone https://github.com/seankd3/Azimuth-Photo.git
cd Azimuth-Photo
python -m venv web\.venv
web\.venv\Scripts\python.exe -m pip install -r web\requirements-v2.txt
npm ci
.\scripts\start_azimuth_windows.ps1

It asks where to store its catalog, then for a folder of photos, and the library fills in as it scans. INSTALL.md covers the packaged build.

Report a finding

Findings.md is the list every audit adds to. An entry is closed only in the commit that fixes it. There have been more than 950 entries since 9 September. A finding has four parts:

User impactWhat the problem did, described from the user's side. For example: "The window opened after twenty seconds of reindexing." Not "P3 is slow."
EvidenceWhere it is: the file and line, checked on the current main branch. A screenshot also counts.
The fixThe specific change, as exactly as you can describe it. "Run the repairs after the window appears" is a fix. "Make it faster" is not.
How much it mattersHow it ranks against other problems in the same area. If everything is marked urgent, the ranking is useless.

Open an issue with those four parts and it becomes an entry. If you can, say which area it belongs to (grid, loupe, rank, sidebar, search, people, import).

Add a journey script

scripts/journeys/ has one small script for each task a photographer does: cull with the keyboard, zoom in, name a person, find a photo from memory, judge a burst, make an album. Each one runs the app off screen and saves a screenshot, which is compared with the previous round. If a task you do is not covered, a short script for it is a useful contribution, and it will run in every later round.

Open areas

How the work is done

The process is described in the Field Log: requests are recorded word for word in Vision.md, problems go into the findings list, a second model tries to break every change, automated checks count things that should not grow, journey scripts test real tasks, and nothing counts as done until it has been run. Pull requests are reviewed the same way. Changes that remove the code they replace are preferred. The code is licensed under AGPL-3.0.

THE REPOSITORY THE FINDINGS LEDGER THE FIELD LOG