Multi-platform .NET 10 application that reads all photos, albums, and shared albums from a locally-synced Apple Photos library and stores the originals on an S3-compatible object store (SeaweedFS by default). It is a downstream, write-only backup tool: it uploads and never deletes — purge/retention is handled separately.
- Clean Architecture (
Domain → Application → Infrastructure → Cli) with the photo source and object store behind ports, so new sources (GrapheneOS/Android) and providers (PostgreSQL) are additive. - Content-addressed storage (SHA-256) for dedup + idempotent, resumable runs; a
System.Threading.Channelspipeline for concurrency. - EF Core code-first sync state (SQLite now, PostgreSQL later).
- SchemaTools library: diff two Apple
Photos.sqliteschema versions and generate Mermaid ERD, HTML report, EF Core migration, and SQL DDL (see ADR-0013). - Quality gates:
TreatWarningsAsErrors, NuGet vulnerability audit, unit + Testcontainers integration tests.
dotnet build # warnings are errors
dotnet test # unit + integration (integration needs docker/podman)
docker compose up -d seaweedfs # local S3-compatible store (podman compose also supported)
dotnet run --project src/SimplPhoto.CliConfiguration and secrets are environment-driven (SIMPLPHOTO_ prefix); see
ADR-0011.
Architecture and rationale live in docs/adr/; contributor conventions in
CLAUDE.md.