Skip to content

thimo/reassembly

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

64 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Re-assembly

Re-assembly is the reverse of disassembly. (Haynes)

An iOS/iPadOS app for teardown photos: shoot while you take something apart, so you know how it went back together during reassembly. For personal use. The interface is English with a full Dutch localization.

Core idea: Photos is the database

The app stores (almost) nothing itself. All photos, structure and sync live in the iCloud Photo Library. Every byte of custom storage would be CloudKit sync complexity that Photos gives you for free.

The app structure mirrors the Photos hierarchy 1-to-1, under a single root folder "Re-assembly":

  • Folder (PHCollectionList) — can nest (client → project → …)
  • Album (PHAssetCollection) — holds the photos

Because of this, managing everything also works straight from the Photos app.

What works

  • Project list — folders/albums under the root, sorted by latest activity (newest asset). Nesting, renaming (swipe or tap the title), and delete-all (album/folder + all its photos in one action). Folder rows show their contents split by kind ("1 folder, 2 albums"). A new project opens immediately, and the app reopens where you left off — even after a force-quit.
  • Photo grid per album — grouped by day with a date header (Today / Yesterday / date), newest first. Multi-select to delete several photos in one action (one system confirmation).
  • Rotate — 90° counterclockwise like Photos, from the grid's long-press menu or the viewer. Non-destructive via the Photos edit pipeline: the original is kept and Revert in Photos still works. Renders explicit 8-bit SDR output (HDR camera photos would otherwise be rejected by Photos).
  • Built-in camera (AVFoundation) — no "Use Photo" confirmation, shoots straight through, the album stays active (next photo is one tap). Writes the geotag onto each photo itself. Shutter gives a flash + haptic. Swipe down to close (photos are already saved).
  • Photo viewer — pinch-zoom, double-tap, panning; rotate and delete in Photos-style action bubbles; swipe down to close.
  • Quick actions — long-press the app icon for "photo in " shortcuts (active + recent projects), and an App Intent for Shortcuts, Siri and the Action Button. Both jump straight into the album and open the camera.
  • English + Dutch — English is the default; Dutch follows the system language via String Catalogs.

On the roadmap

  • ControlWidget (Control Center / lock-screen button) and LockedCameraCapture on the existing App Intent — waiting on the extension targets.
  • Optionally defer the location prompt until the first geotag moment.

See SPEC.md for the full concept and the architecture decisions made along the way.

Tech

  • SwiftUI, one codebase for iPhone + iPad, minimum iOS 18
  • No external dependencies, no custom datastore
  • PhotoKit for structure and assets, AVFoundation for the camera, CoreLocation for the geotag
  • Own state: the active project and the open navigation path (UserDefaults, per device — deliberately localIdentifier-based, nothing syncs)

Permissions: full Photos access (.readWrite), camera, and location.

Building

Open Reassembly/Reassembly.xcodeproj in Xcode and run on a simulator or device. The camera and geotag only work on a real device.

The app icon (an exploded bolt assembly on a purple gradient) is generated by Resources/make-icon.html.

About

iOS/iPadOS app for teardown photos — Photos as the database

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages