Skip to content

Repository files navigation

SimplPhoto

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.

Highlights

  • 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.Channels pipeline for concurrency.
  • EF Core code-first sync state (SQLite now, PostgreSQL later).
  • SchemaTools library: diff two Apple Photos.sqlite schema 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.

Getting started

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.Cli

Configuration and secrets are environment-driven (SIMPLPHOTO_ prefix); see ADR-0011.

Documentation

Architecture and rationale live in docs/adr/; contributor conventions in CLAUDE.md.

License

Apache-2.0.

About

Multi-platform .NET 10 app backing up iCloud photos, albums, and shared albums to S3-compatible storage

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages