Skip to content

flozma/RenderRoll

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 

Repository files navigation

RenderRoll

RenderRoll is an iOS film camera app where you shoot one finite roll at a time and wait before seeing your photos.

It is built around the slower rhythm of real film: choose a roll, shoot each frame carefully, and let the roll develop before the images become clear.

Features

  • 2-tab SwiftUI app: film roll grid and settings.
  • iOS 26 target with native SwiftUI glass-style UI.
  • 4-column film roll grid with 16 visible slots.
  • Roll templates:
    • Forest 400
    • Sunny Gold 200
    • Portrait 160
    • Mono 400
    • Night 800
  • Free mode supports up to two local rolls.
  • Roll-level deletion from the grid with confirmation.
  • Individual photo deletion inside a roll is intentionally unavailable to preserve the film-roll constraint.
  • Custom AVFoundation camera flow, so shooting stays inside the app instead of opening the system camera UI.
  • X100VI-inspired camera chrome with live roll-specific preview styling.
  • Captured frames are rendered through roll-specific film looks before saving.
  • Developed-roll viewing as either carousel or iPhone Photos-style grid.
  • Progressive developing preview in five-minute steps: strong blur/mosaic at 0.0, clearer at 0.3/0.7, and sharp at 1.0.
  • Local notification scheduling for film development completion.

Tech Stack

  • Swift
  • SwiftUI
  • SwiftData
  • FileManager
  • AVFoundation
  • Core Image
  • LocalNotification
  • iCloud / CloudKit-ready settings surface

Architecture

  • App: app entry point and SwiftData container setup.
  • Models: film roll, photo metadata, development state, and roll templates.
  • Views: roll grid, roll detail, camera, developing image, settings, and roll creation UI.
  • ViewModels: access policy for the current free-mode roll limit.
  • Services: camera capture, film rendering, image file storage, and notifications.
  • Styles: shared glass UI helpers.

Data & Storage

  • SwiftData models for rolls, photo metadata, capture time, and development times.
  • FileManager image persistence under the app Documents folder.
  • Roll deletion removes both SwiftData metadata and saved image files.
  • SwiftData relationship delete rules cascade photos when a roll is deleted.

Film Looks

The app currently includes film-inspired looks tuned from Fuji X Weekly-style recipe concepts:

  • Forest 400: green negative-style look.
  • Sunny Gold 200: warm gold chrome look.
  • Portrait 160: softer portrait-oriented color.
  • Mono 400: black-and-white grain look.
  • Night 800: tungsten/night look with halation-inspired treatment.

Run

Open RenderRoll.xcodeproj in Xcode 16 or newer, select an iPhone simulator or device, and run the RenderRoll target. The installed app name is RenderRoll.

For real camera capture, run on a physical iPhone. The simulator uses generated placeholder frames so the full app flow can still be tested.

App Store Notes

  • App icons are included in Assets.xcassets/AppIcon.appiconset.
  • CFBundleIconName is configured through the Xcode project build settings.
  • ITSAppUsesNonExemptEncryption is set to NO.

Next Steps

  • Add iCloud entitlements and a CloudKit container before enabling real SwiftData CloudKit sync.
  • Decide whether FileManager images sync through CloudKit assets or iCloud Drive.
  • Re-enable authentication when the product is ready for multi-roll account sync.
  • Add subscription gating if the free-mode two-roll limit becomes a paid feature.

About

iOS film camera app - where you shoot one roll at a time and wait before seeing your photos

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages